在另一个完成后运行BackgroundWorker

问题描述 投票:4回答:5

我想在另一个完成后再启动BackgroundWorker。我不确定如何编写代码,所以我真的没什么可展示的。

我曾考虑过在RunWorkerCompleted中编写它,但这似乎是放置逻辑以启动另一个工作人员的错误位置。

我在哪里以及应该怎么做?

[基本上,我想使用相同的工作程序,但要做其他事情。就像在步骤1中一样,它从文件中解析数据,而在步骤2中,在步骤1完成之后,它应该将已解析的数据从内存写入数据库。

c# backgroundworker multithreading
5个回答
1
投票

如果使用第三方库进行作业调度是可以接受的,请签出Quartz.NET,它是此处http://quartznet.sourceforge.net/tutorial/lesson_7.html中描述的作业侦听器机制。如果您想自己实现它,我将使用单个BackgroundWorker来执行组织为Chain of Responsibility的一组作业,您可以在http://dofactory.com/Patterns/PatternChain.aspx处了解更多有关此模式的信息。


4
投票

您可以改用.NET 4.0 Task类,然后使用Task.ContinueWith将更多工作排队。


3
投票

最好使用两个不同的BackgroundWorker组件。在RunWorkerCompleted事件处理程序中为第一个启动第二个。这似乎是一种非常合理的处理方式。只是不要尝试使用单个BackgroundWorker来完成此操作。


3
投票

[根据您的描述,这些步骤似乎是相关且顺序的,因此我将其实现为单个BGW,其中DoWork执行两个步骤,并在解析步骤和写入数据库步骤之间调用ReportProgress


0
投票

这将允许使用一名后台工作者进行多次后续操作:

© www.soinside.com 2019 - 2024. All rights reserved.