winform下载文件到移动硬盘时,拔出设备之后出现诡异的问题!!!!

问题描述

publicpartialclassForm3:Form{publicintTotalBytes=0;publicintCurrentBytes=0;BackgroundWorkerBgw=null;publicForm3(){InitializeComponent();Bgw=newBackgroundWorker();Bgw.WorkerSupportsCancellation=true;Bgw.WorkerReportsProgress=true;Bgw.DoWork+=newDoWorkEventHandler(Bgw_DoWork);Bgw.RunWorkerCompleted+=newRunWorkerCompletedEventHandler(Bgw_RunWorkerCompleted);Bgw.ProgressChanged+=newProgressChangedEventHandler(Bgw_ProgressChanged);Bgw.RunWorkerAsync();}voidBgw_ProgressChanged(objectsender,ProgressChangedEventArgse){this.progressBar1.Maximum=Convert.ToInt32(TotalBytes);this.progressBar1.Value=e.ProgressPercentage;}voidBgw_RunWorkerCompleted(objectsender,RunWorkerCompletedEventArgse){MessageBox.Show("下载完成!");//this.Close();}voidBgw_DoWork(objectsender,DoWorkEventArgse){FileStreamsouce=null;FileStreamdest=null;try{souce=newFileStream("E:\办公软件\ue_chinese19.10.exe",FileMode.Open);dest=newFileStream("D:\ue_chinese19.10.exe",FileMode.Create);TotalBytes=Convert.ToInt32(souce.Length);byte[]by=newbyte[1024];intosize=souce.Read(by,0,(int)by.Length);while(osize>0){CurrentBytes+=1024;dest.Write(by,0,osize);(senderasBackgroundWorker).ReportProgress(CurrentBytes);osize=souce.Read(by,0,(int)by.Length);Thread.Sleep(1);}souce.Flush();souce.Close();dest.Flush();dest.Close();}catch(Exceptionex){souce.Flush();souce.Close();//throwex;}}privatevoidbutton1_Click(objectsender,EventArgse){Bgw.RunWorkerAsync();}//拔出的时候等20秒左右编译器报错程序退出

解决方案

解决方案二:
大致看了下,你这是从E盘拷贝文件到D盘拔掉设备(应该是D或E),而此时复制没有完成,线程还在后台执行,找不到文件源,或复制过来的文件没地方放,就会出问题了
解决方案三:
HResult=-2147023890Message=文件所在的卷已被外部更改,因此打开的文件不再有效。Source=mscorlibStackTrace:在System.IO.__Error.WinIOError(Int32errorCode,StringmaybeFullPath)在System.IO.FileStream.WriteCore(Byte[]buffer,Int32offset,Int32count)在System.IO.FileStream.FlushWrite(BooleancalledFromFinalizer)在System.IO.FileStream.Dispose(Booleandisposing)在System.IO.FileStream.Finalize()这里明显是某个地方调用了Stream的Dispose方法,目测应该是垃圾回收机制起作用了!只是释放资源的时候报错了
解决方案四:
这哪里诡异了?

时间: 2024-09-12 22:37:36

winform下载文件到移动硬盘时,拔出设备之后出现诡异的问题!!!!的相关文章

asp.net WinForm下载文件并显示下载进度条教程

WinForm下载文件并显示下载进度示例  代码如下 复制代码 /// <summary> /// 显示进度 /// </summary> /// <param name="val"></param> private void ProgressBar_Value(int val) {     progressBar1.Value = val;     label1.Text = val.ToString() + "%"

android FM播放时拔出耳机后FM APP自动close解决方法

1.修改FMRadioService.java 添加: 复制代码 代码如下: public static final int MSG_EXIT_FM = 1234; private Handler sHandler11 = new Handler() { @Override public void handleMessage(Message msg) { FMRadioLogUtils.d(TAG, "sHandler11 = " + msg.what); switch (msg.wh

IE的下载文件对话框弹出之前锁住画面,弹出之后,画面解锁。大神快来解答~~

问题描述 该程序使用的是什么WEBUI的框架,很奇怪的东西,试了很多方法都出错..状况描述:画面上有一个按钮,点击会弹出IE的那个下载文件对话框.但是弹出下载文件对话框之前如果数据量较大的话,会有很长一段时间的等待.在这段等待的时间里客户有可能会再次点击下载的那个按钮.为了避免这个情况,点击下载之后页面锁住,也就是一个东西把下面都盖住,然后又一个"loading..."的字样.当前情况:点击按钮后,画面被loading...字样的div盖住,永不解锁...问题:如何知道在什么时候IE的

下载文件图标左下角出现小黄锁怎么办

  电脑在下载文件到桌面时,总会在图标左下角出现一把小黄锁,怎么办? 原因分析: 下载文件时,在图标左下角出现小黄锁,有可能是权限设置问题导致. 解决方案: 1. 进入"c:userlenovo桌面"文件夹; 2. 右击"桌面"文件夹,选择"属性",选择"安全"选项卡,点击"编辑"; 3. 在"桌面的权限"对话框下,点击"添加"; 4. 在"输入对象名称来选

win7下载gz文件,解压时弹出文件损坏,重新下载了好几次都是这个情况,求大神啊

问题描述 win7下载gz文件,解压时弹出文件损坏,重新下载了好几次都是这个情况,求大神啊 win7下载gz文件,解压时弹出文件损坏,重新下载了好几次都是这个情况,求大神啊 解决方案 要么就是本身文件有损坏,或者你的网络环境不好,导致下载出错 解决方案二: 换个解压文件试试,或者用命令解压 解决方案三: 换一个解压工具吧,TCP协议是面向连接的可靠协议,使用他传输的数据是可靠的,所以一般不会是因为下载中出现的数据错误,还有一种可能就是服务器上这个文件本身就是损坏的 解决方案四: 确实是文件损坏了

IE浏览器下载文件时总弹出迅雷下载如何解决

安装迅雷后,IE 浏览器会加载一些迅雷的扩展工具,所以迅雷窗口会自动弹出.只要将相关的加载项禁用就可以解决这个问题了. 打开 Internet Explorer 9,在右上角单击"工具"按钮,选择"管理加载项". 收起这个图片展开这个图片   在左侧窗口单击"工具栏和扩展",找到"迅雷下载"相关的选项后选中,然后单击窗口底部的"禁用"按钮. 收起这个图片展开这个图片   弹出确认窗口后,单击"禁用

win7系统电脑拔出U盘时提示“现在无法停通用卷”的解决方法

  win7系统电脑经常使用U盘传输或拷贝文件,使用完U盘之后从win7系统电脑中拔出时提示"现在无法停通用卷设备.请扫后再停止该设备"怎么办呢?出现这样问题的原因有很多种,最常用见的就是电脑中还打开着U盘中的文件或目录,这样是会提示"无法停通用卷"了,我们只要把打开U盘的所有文件与文件关闭即可,如果关闭文件后还会弹出此窗口,可参考下面教程解决. 推荐:雨林木风win7旗舰版64位 解决方法一: 1.我们把在电脑中打开U盘中的文件与目录全部关闭; 2.如果还有不行我

如何避免拔出U盘时数据的丢失

先打开"我的电脑",选择你U盘盘符.右击选择"属性",这时会弹出"可移动磁盘(H:)属性"(这里的盘符是按操作系统硬盘的分区和光驱的分区来排列的)的窗口,单击"硬件"标签. 在"所有磁盘驱动器"中选择使用的U盘(不要选择错了,这里会出现硬盘.光驱.虚拟光驱等设备,一般U盘都会有"Flash Disk USB"这几个字母),选择后,单击"属性",这时会打开U盘名称属性窗

怎样避免直接拔出U盘时数据的丢失

  用过U盘的朋友们都会碰到这样的情况,想退出U盘时,点击右下方的"安全删除硬件"的图标,都会弹出一个对话框,"现在无法停止'通用卷"设备,请稍后再停止该设备".有的朋友怕直接拔下U盘后,U盘里的数据会丢失.实际上这个时候并没有打开U盘中的文件,U盘也是正常的,但为什么会出现这个问题呢,直接拔出U盘里的数据会不会丢失呢,下面就给大家讲解如何解决这种情况和避免直接拔出U盘时数据的丢失. 先打开"我的电脑",选择你U盘盘符.右击选择&quo