如何在处理大量数据时保留响应式UI?

我正在创建winform来处理(将txt文件转换为tiff)大量文件。 我把所有代码放在一个按钮(btnProcess)后面。 这是一个好主意吗? 它工作但我注意到当我离开winform然后回到这里我看到空白窗口,直到过程完成。 我听说过背景工作者。 后台工作者的目的是什么?

你需要的是multithreading。 这意味着两个(或更多)代码线程将并行运行。 其中一个是UI线程,负责绘制窗口的线程。 在您的情况下,您在UI线程中运行代码,从而在代码运行时阻止UI呈现。

BackgroundWorker的目的是在新线程上启动操作,这正是您所需要的。

BackgroundWorker类

BackgroundWorker类允许您在单独的专用线程上运行操作。 下载和数据库事务等耗时的操作可能会导致用户界面(UI)在运行时停止响应。 当您需要响应式UI并且遇到与此类操作相关的长时间延迟时,BackgroundWorker类提供了一种方便的解决方案。

我上面链接的页面包含一个完整的BackgroundWorker示例

这取决于您的应用程序。 如果这是一个单一用途的应用程序不是很长,唯一的问题是屏幕不绘制。 这听起来像是对我来说,只需将Application.DoEvents抛入循环并完成它。