WFP 后台工作线程等待其他后台工作线程完成

本文关键字:工作 线程 后台 等待 WFP 其他 | 更新日期: 2023-09-27 18:31:46

我的代码中有 2 个 BackgroundWorkers。每个 BackgroundWorker 都做一些工作,但它们不能一起运行,这意味着第二个需要等待第一个完成。我也不希望在工作期间单击主窗口时应用程序崩溃。我该怎么做?

WFP 后台工作线程等待其他后台工作线程完成

第一件事是,也许您可以在 1 BackgroundWorker内完成所有后台工作。

若要回答你的问题,可以在第一个事件的 RunWorkerDone 事件处理程序中启动第二个BackgroundWorker

bw1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw1_RunWorkerCompleted);
private void bw1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
    //celebration!
    //and then start the 2nd BackgroundWorker
    BackgroundWorker bw2 = new BackgroundWorker();
    bw2.DoWork += new DoWorkEventHandler(bw2_DoWork);
    bw2.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw2_RunWorkerCompleted);
    bw2.RunWorkerAsync();
}