使用backgroundworker的多种长方法的最佳实践

时间:2010-03-10 18:33:30

标签: c# winforms backgroundworker

我有一个有很多长方法的表单。我的任务是:最佳做法是什么?使用匿名方法和只有一个backgroundworker或为每个long方法创建BackgroundWorker实例。

请帮忙。感谢。

2 个答案:

答案 0 :(得分:2)

我个人会为每个任务使用一个BackgroundWorker实例。但是,请记住,您可以在多个不同的线程实例中多次调用相同的委托方法。

通过每个长方法任务一个BackgroundWorker,您可以充分控制您的方法。此外,据我所知,一旦BackgroundWorker的一个实例执行任务,它就会忙于这个后台任务,因此无法让其他任务完成。我可能也错了,但无论如何我都会这么做,因为你的DoWork()事件处理程序只能执行它对此BackgroundWorker要求的操作。所以,我似乎不可能只为一个BackgroundWorker实例执行完全不同的任务。

这有帮助吗?

答案 1 :(得分:2)

总结:

在一个BackgroundWorker中的优势:

  1. 您可以控制多个方法的执行顺序。然而,这也是一个缺点,因为如果您使用多个BackgroundWorkers,您“假设”它们并行执行而不必担心订单;

  2. 创建和处理线程的开销较少(如果可能,每次都使用相同的实例,但这并不总是可行的,具体取决于启动过程的内容。如果您希望它同时完成,则不可能;)< / p>

  3. 如果要在线程之间进行通信,可以累积批量通信并更有效地进行。此外,如果所有方法都在同一个线程中运行,它可以为您节省一些通信。

  4. 多个BackgroundWorkers的优势:

    1. 上述并行性;

    2. 每个进程结束都可以使用另一个委托,因此可以执行其他操作。

    3. 希望它有所帮助!