我正在创建winform来处理(将txt文件转换为tiff)大量文件。我把所有代码放在一个按钮(btnProcess)后面。这是一个好主意吗?它工作但我注意到当我离开winform然后回到这里我看到空白窗口,直到过程完成。我听说过背景工作者。后台工作者的目的是什么?
答案 0 :(得分:9)
这里需要的是多线程。这意味着两个(或更多)代码线程将并行运行。其中一个是UI线程,负责绘制窗口的线程。在您的情况下,您在UI线程中运行代码,从而在代码运行时阻止UI呈现。
BackgroundWorker的目的是在新线程上开始操作,这就是你需要的。
答案 1 :(得分:3)
BackgroundWorker类允许您 在一个单独的, 专用线程。耗时的 下载和数据库等操作 交易可能会导致您的用户 界面(UI)看起来好像它 他们已经停止了回应 运行。当您需要响应式UI时 你面临着长时间的拖延 与此类操作相关联的 BackgroundWorker类提供了一个 方便的解决方案。
我上面链接的页面包含完整的BackgroundWorker示例。
答案 2 :(得分:2)
这取决于您的申请。如果这是一个单一用途的应用程序不是很长,唯一的问题是屏幕不绘制。这听起来像是对我来说,只需将Application.DoEvents抛入循环并完成它。