【问题标题】:Background worker后台工作者
【发布时间】:2011-07-29 03:28:25
【问题描述】:

如果我有一组操作,我想根据某个条件在后台工作人员中运行,并且我有 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 等......无论如何可以避免这种情况,从而减少代码的混乱/混乱,因为其中一些方法可能相当大?

谢谢

【问题讨论】:

    标签: c# backgroundworker


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您可以考虑使用单个 backgroundworker 并向其传递参数。在 DoWork 方法中使用此参数可以确定要工作的代码块。检查此线程

      Sending Arguments To Background Worker?

      【讨论】:

        【解决方案3】:

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

        要开始一个任务,您可以简单地使用:Task.Factory.StartNew() 传递一个方法或一个 lambda 表达式作为参数。你会得到一个 Task 对象,你可以用它来继续,取回结果等等。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-10-30
          • 2011-03-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多