我有这样的代码:
if (condition#1) {
// step 2
ConfigurazioneSA csa = new ConfigurazioneSA(...);
WconfiguraSA.RunWorkerAsync(csa);
}
else
{
// step 1
PassaggioIE bo = new PassaggioIE(...);
WpassIE.RunWorkerAsync(bo);
if (condition#2) {
// step 2
ConfigurazioneSA csa = new ConfigurazioneSA(...);
WconfiguraSA.RunWorkerAsync(csa);
}
}
当执行流程在condition#1
分支内时,该step 1
块先前已执行(在我的应用程序的先前执行中),因此step 2
可以毫无问题地执行。
但是,当执行流程在else
分支内时,我需要执行step 1
,当这一步完成时,我可以执行step 2
. 由于我使用BackgroundWorker
作为第 1 步开始,因此step 2
在导致错误后立即开始。
我会同步这个生产者/消费者问题,尽可能少地增加熵。我发现的所有解决方案都会引入大量代码,而我会使用一个简单的信号量来避免step 2
执行直到step 1
未完成。有任何想法吗?