Winform 应用程序冻结

C.J*_*.J. 0 c# winforms

我是开发 Winform 应用程序的新手(使用 C# .NET)

当后面运行太多操作时,特别是当涉及大量数据从数据库读取/写入时,我的应用程序将冻结,有时甚至显示“无响应”。但应用程序并没有崩溃,它只是冻结,直到后面的所有代码完成执行。

我的问题是,如何“解冻”该应用程序。例如,用户仍然可以单击“取消”按钮来终止正在运行的任何操作,或者显示进度条或类似的东西?

Ser*_*kiy 6

您的应用程序冻结是因为它具有单线程,该线程负责绘制 UI 和执行其他“繁重”操作(读/写数据库)。当线程忙于数据库时,它无法刷新 UI。您应该在后台线程中执行“繁重”操作。因此,主线程将只负责刷新 UI,并且它始终准备好执行此操作。使用BackgroundWorker组件在后台线程上运行一些操作。

建议阅读:适用于初学者的 BackgroundWorker 类示例以及如何:使用后台工作者