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() + "%";
}
}
------解决方案--------------------
亲,他用了缓存,缓存大小是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 就知道怎么用了
------解决方案--------------------哦,我以为你只是要解决界面卡掉的问题,不好意思,巨文件我没有研究呵呵!
------解决方案--------------------