複数のスレッドを使用する必要があるアプリケーションを作成しています。これらのスレッドのそれぞれがタスクを実行し、そのタスクの最後に進行状況バーを更新して全体の進行状況を示します。問題は、クラッシュする可能性のあるこれらのスレッドを制御できないため、予防策としてロックを使用しましたが、次のコードまたはそのバリエーションを使用するように勧められたことです。このコードをどこに配置すべきかについて、ご意見をお聞かせください。
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");
}
各スレッドが呼び出す個別のメソッドを作成し、そのメソッドがこのコードを使用して各イベント更新を起動するか、各スレッドが実行するスピンアウト メソッドにこのコードを含める必要があります。
助けてくれてありがとう