首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# winform 拷贝文件 未响应 怎么解决

2013-04-05 
C# winform 拷贝文件 未响应如何解决用C#做的界面 开了一个线程用来专门传输文件,但是文件太大界面就会出

C# winform 拷贝文件 未响应 如何解决
用C#做的界面 开了一个线程用来专门传输文件,但是文件太大界面就会出现未响应的状况。开的这个线程
是委托给form的,

不知这个问题如何解决,特来请教大家。
[解决办法]
如果是大文件拷贝,你可能要换思路,不能简单的用File.Copy来,要自己在线程读写文件来实现大文件拷贝

你参考一下这个
C# 最快的大文件拷贝方法 
[解决办法]
做一个传输进度条,在事件里面写或是新开一个线程.保证进度条不卡,你的程序就不会卡了.
[解决办法]
有进度条用户体验也好是吧
[解决办法]
我只处理过下载的.在事件里完成不会卡.给你参考

        //下载过程处理
        private void MyWebClient_DownloadProgressChanged(object sender, System.Net.DownloadProgressChangedEventArgs e)
        { 
            this.PBar_DonwLoad.Value = e.ProgressPercentage;
            if (e.ProgressPercentage != 100)
            {               
                this.BT_Login.Text = "更新:" + e.ProgressPercentage.ToString() + "%";
            }
        }
[解决办法]

引用:
引用:如果是大文件拷贝,你可能要换思路,不能简单的用File.Copy来,要自己在线程读写文件来实现大文件拷贝

你参考一下这个
C# 最快的大文件拷贝方法

亲,我想问问,他这个文章中到底是用缓存啦,还是不用缓存啦,缓存多大合适啦。

亲,他用了缓存,缓存大小是1024*1024*32
[解决办法]
建议你用BackgroundWorker这样至少界面不会卡死

      private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
             传输文件
        }

        private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
        {
             报告进度
        }

        private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            完成作业
        }
[解决办法]
工具箱里有一个 BackgroundWorker的组件,然后添加到你的winform画面

然后在他的事件做你要做的事情,它其实就是工作进程的组件,在DoWork中它创建进程处理你工作,ProgressChanged事件里回报你进展到哪里,最后完成工作进入RunWorkerCompleted事件

其实你百度下BackgroundWorker 就知道怎么用了
[解决办法]
哦,我以为你只是要解决界面卡掉的问题,不好意思,巨文件我没有研究呵呵!
[解决办法]
引用:
http://www.cnblogs.com/tiasys/archive/2009/11/30/1614016.html



其实我想用这个,但是貌似有错,还不知道如何修改。



调试以下代码,定位问题再慢慢修改呗
[解决办法]
楼主可以看看这个,这个例子介绍比较详细http://hi.baidu.com/javenpop/item/0ffd704bc39a3702e83504c4

热点排行