我想在另一个完成后再启动BackgroundWorker
。我不确定如何编写代码,所以我真的没什么可展示的。
我曾考虑过在RunWorkerCompleted
中编写它,但这似乎是放置逻辑以启动另一个工作人员的错误位置。
我在哪里以及应该怎么做?
[基本上,我想使用相同的工作程序,但要做其他事情。就像在步骤1中一样,它从文件中解析数据,而在步骤2中,在步骤1完成之后,它应该将已解析的数据从内存写入数据库。
如果使用第三方库进行作业调度是可以接受的,请签出Quartz.NET,它是此处http://quartznet.sourceforge.net/tutorial/lesson_7.html中描述的作业侦听器机制。如果您想自己实现它,我将使用单个BackgroundWorker
来执行组织为Chain of Responsibility的一组作业,您可以在http://dofactory.com/Patterns/PatternChain.aspx处了解更多有关此模式的信息。
您可以改用.NET 4.0 Task类,然后使用Task.ContinueWith将更多工作排队。
最好使用两个不同的BackgroundWorker
组件。在RunWorkerCompleted
事件处理程序中为第一个启动第二个。这似乎是一种非常合理的处理方式。只是不要尝试使用单个BackgroundWorker
来完成此操作。
[根据您的描述,这些步骤似乎是相关且顺序的,因此我将其实现为单个BGW,其中DoWork
执行两个步骤,并在解析步骤和写入数据库步骤之间调用ReportProgress
。
这将允许使用一名后台工作者进行多次后续操作: