C# 在复制大量文件期间不响应UI
问题描述
我已经编写了一个备份管理器项目,该项目提供了一个文件夹,它将每个文件和文件夹都复制到另一个位置,依此类推。
它可以工作(很好地完成了复制作业),但是在复制过程中(大约需要1分钟),应用程序UI不会响应。我听说过线程,并且看到过并行编程一词(仅此而已),现在我需要一些解释,比较和示例,以能够切换我的代码。
我之前对线程做过非常简单的操作,但是很久以前,我对线程还没有足够的信心。这是我的代码:
1 | private void CopyFiles(string path, string dest) |
我会根据特定的时间间隔在计时器中运行此程序,如果我使用线程,是否应该省略计时器?带领我,我很困惑。
最佳答案
由于您没有足够的线程信心,因此我强烈建议您阅读Joe Albahari’s Threading in C# Tutorial。并行编程是指您以“并行”方式或同时进行多项操作(主要是将大量计算分散在多个CPU或GPU内核上)。在这种情况下,您希望线程在复制所有文件时使您的UI响应。从本质上讲,您将具有如下所示的内容:(在阅读了C#教程中的线程之后)
1 | Thread copyFilesThread = new Thread(() => |
UI在其自己的线程上运行。放入您的应用程序中的所有代码都将在UI线程上运行(除非您显式使用线程)。由于您的CopyFiles方法需要很长时间,因此它将停止UI,直到复制作业完成。使用线程将在UI线程的单独线程上运行CopyFiles,因此使UI线程响应。
编辑:至于您的计时器,它多久运行一次?
关于c# - 用户界面在复制大量文件期间不响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14018567/
相关链接(侵删)
欢迎到公众号来唠嗑:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 赵逸尘个人博客!