背景工作者

时间:2011-04-04 12:22:13

标签: c# backgroundworker

如果我有一组操作,我想根据特定条件在后台工作程序中运行,并且我有10个条件,例如

if(a)
    BackgroundWorker doA = new backgroundworker()
if(b) 
    BackgroundWorker doB = new backgroundworker()
if(c) 
    BackgroundWorker doC = new backgroundworker()
if(d) 
    BackgroundWorker doD = new backgroundworker()
...
...

每个后台工作人员都需要一个dowork,runworkercompleted等....无论如何都要避免这样做,这样会使代码变得更乱,因为其中一些方法可能会很大?

感谢

3 个答案:

答案 0 :(得分:3)

您应该使用System.Threading.Tasks命名空间中的Task,它非常简单易用。

要启动任务,您只需使用:Task.Factory.StartNew()传递方法或lambda表达式作为参数。你得到一个Task对象,你可以用它继续,得到结果等等。

答案 1 :(得分:1)

您可以考虑使用单个backgroundworker并将参数传递给它。在DoWork方法中使用此参数可以确定要使用哪个代码块。检查此线程

Sending Arguments To Background Worker?

答案 2 :(得分:0)

为什么不将需要评估的对象传递给BackgroundWorker,而BackgroundWorker可以使用它来确定要做什么?