一个backgroundworker对象或多个backgroundworker对象?

时间:2014-06-12 06:10:59

标签: c# backgroundworker

我有一个.net windows应用程序(单个表单),有很多按钮,比如从db,下一页,上一页,搜索等加载数据。我想在点击它们时使用backgroundworker来处理所有按钮,所以我的用户界面没有冻结。

问题是,我应该在整个表单中为所有按钮使用1个backgroundworker对象,还是在每个按钮上使用单独的背景工作者?

2 个答案:

答案 0 :(得分:0)

如果您只使用一个需要将所有数据库操作包装到一个结果中,那么这篇文章很有用。否则你应该使用多个背景工作者。

Handling multiple operations using BackgroundWorker

多个会更好。

答案 1 :(得分:0)

您可以使用任务工厂。不需要创建自己的后台工作人员/工人,速度更快。

 Task<bool> task = Task.Factory.StartNew<bool>
 (() => /*Do you button operations */);

您可以在此处详细了解任务:http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.aspx

请注意,这需要.Net 4.5,如果您要定位较旧的Framewroks,请查看一个线程池: http://msdn.microsoft.com/en-us/library/3dasc8as.aspx