最佳做法多长

我有一个有很多长方法的表单。 我的追求是:最佳做法是什么? 使用匿名方法,只有一个背景工作者或为每个长方法创建一个BackgroundWorker实例。

请帮忙。 谢谢。


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

通过每个长时间任务使用一个BackgroundWorker,您将对您的方法有很大的控制权。 此外,就我的理解而言,一旦BackgroundWorker的实例执行任务,它就忙于此后台任务,因此无法为其他人使用。 虽然我可能会误解,但无论如何,我的方式是这么做的,因为您的DoWork()事件处理程序只能执行要求为此BackgroundWorker执行的操作。 所以,我似乎不可能为BackgroundWorker的一个实例执行完全不同的任务。

这有帮助吗?


综上所述:

一个BackgroundWorker的优点:

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

  • 减少线程创建和处理的开销(如果可能的话,每次都使用相同的实例,但这并不总是可能的,这取决于启动过程的开始情况。如果要同时完成则不可能)。

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

  • 多个BackgroundWorkers的优势:

  • 前面提到的并行性;

  • 每个流程结束可以使用另一个委托,因此可以执行其他操作。

  • 希望能帮助到你!

    链接地址: http://www.djcxy.com/p/45219.html

    上一篇: Best practice for multiple long

    下一篇: C++0x atomic implementation in c++98 question about