【发布时间】:2013-10-03 07:36:53
【问题描述】:
我有这样的代码:
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 作为第一步开始,step 2在导致错误后立即开始。
我会同步这个生产者/消费者问题,尽可能减少熵。我发现的所有解决方案都引入了大量代码,而我会使用一个简单的信号量来避免 step 2 执行,直到 step 1 未完成。有什么想法吗?
【问题讨论】:
标签: c# backgroundworker .net-4.5