我是开发Winform应用程序的新手(使用C#.NET)
我的申请会冻结,有时甚至会显示"没有回应"当有太多的操作在后面运行时,特别是当它涉及大量数据读/写数据库时。应用程序没有崩溃,它只是冻结,直到后面的所有代码都完成执行。
我的问题是,我如何解冻"应用程序。例如,用户仍然可以点击"取消"按钮,以终止正在运行的操作,或显示进度条或类似的东西?
答案 0 :(得分:4)
您的应用程序冻结,因为它具有单线程,它负责绘制UI和执行其他“繁重”操作(读取/写入数据库)。当线程忙于数据库时,它无法刷新UI。您应该在后台线程中执行“重”操作。因此,主线程仅负责刷新UI,并且随时可以做到这一点。使用BackgroundWorker
组件在后台线程上运行某些操作。
建议阅读:BackgroundWorker Class Sample for Beginners和How to: Use a Background Worker