我有这样的代码:
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未完成。有任何想法吗?