【发布时间】:2010-09-02 09:54:18
【问题描述】:
*注意:根据用户的 cmets 重新表述我的问题。
需要有关如何将 .Net 的 Backgroundworker 线程用于以下目的的帮助,以提高我的 .Net winforms 应用程序中的 UI 响应能力和性能。 当用户单击 UI 表单中的“计算”按钮时,我正在这样做:
1.从数据库中获取类别C的列表[这通常在10个左右]
2.对于每个类别C,执行以下操作:
a.调用第三方库,做一些处理,计算分类价格。
b.获取产品列表[这通常是 800 左右]。
c.对于每个产品,使用上面的类别价格计算其价格。
d.使用存储过程将每个产品的价格更新回数据库中。
3.将进度更新回[或报告任何错误消息]到 UI 中的表单。
仅供参考,我想在上面的步骤 #c 和 #d 中使用 Backgroundworker。
我尝试在我的方法中使用 Backgroundworker。我将调用 InitializeBackgroundworker() 和 RunWorkerAsync() 放在最外层循环中[即。第 2 步]。但是看起来,Backgroundworker 仅被第一个类别调用。我在这里缺少什么?
所以我的问题是,我在哪里调用 InitializeBackgroundworker() 和 RunWorkerAsync()? 以及如何确保为每个类别调用这两种方法?
感谢阅读。
【问题讨论】:
-
我能想到几个地方看看——你能把主循环的代码贴出来吗?
标签: c# multithreading backgroundworker