【发布时间】:2012-11-08 17:34:46
【问题描述】:
场景
我有一个 Windows 窗体应用程序。在主窗体内部有一个循环大约 3000 次,在新线程上创建一个类的新实例以执行一些计算。请记住,此设置使用线程池,当此循环只有大约 100 次迭代(要处理 100 个资产)时,UI 会保持响应。但是一旦这个数字开始大幅增加,UI 就会锁定到 eggtimer 模式,因此写入表单列表框的日志变得不可读。
问题
我认为解决此问题的最佳方法是使用后台工作人员是否正确? UI 是否被锁定是因为即使我使用了许多不同的线程(为了提高速度),但 UI 本身并不在其自己的单独线程上?
非常感谢建议的实现。
编辑!!
因此,可以说,我决定分批处理 100 个资产,而不是仅仅启动并排队处理 3000 个资产。我将如何有效地执行此操作?我之前尝试添加“Thread.Sleep(5000);”在每批 100 人被解雇之后,但整个事情似乎都糟透了....
【问题讨论】:
标签: c# winforms backgroundworker threadpool