我正在编写一个应用程序,我必须使用多个线程,这些线程中的每一个都将执行一个任务,并在该任务结束时更新一个进度条以指示整体进度。问题是,因为我无法控制这些线程,它们可能会发生冲突,所以我使用锁定作为预防措施,但我也被建议使用以下代码或它的一些变体。我想听听你对这段代码应该放在哪里的意见。
var temp = updateProcess; //updateProcess is the event getting fired
if (temp != null)
{
var eventListeners = temp.GetInvocationList();
foreach (EventHandler e in eventListeners)
{
e.BeginInvoke(this, null, EndAsyncImageAcquiredEvent, null);
}
}
else
{
throw new FatalException("No handler is attached to the camera's ImageAcquiredEvent");
}
我应该创建一个每个线程调用的单独方法,然后该方法使用此代码来触发每个事件更新,还是应该将此代码包含在每个线程执行的 spun out 方法中。
提前感谢您的帮助