.Net3.5 で複数のスレッド (現時点では少なくとも 3 つ) 間の通信を作成する必要があり、それぞれがプロデューサーとコンシューマーの両方です。スレッドの各ペア間でシグナルを送信する代わりに、私の考えは、次のようなクラスを格納するメッセージのキューを実装することです。
enum Signals { ObjectArrivedOnLightBarrier, ObjectLeftLightBarrier, CodeFound };
enum UnitID { GrabThread, ImageProcessingThread, SaveThread };
// Consumer shows who the message is intended for (and only that unit is allowed to remove it from the queue)
public class QueuedSignal
{
Signals Message;
UnitID Producer;
UnitID Consumer;
}
メッセージが意図されていない場合、任意のスレッドがキュー内の最初のアイテムを覗いてそのままにしておくことができるという考え方です (他のメッセージがほとんどなく、そのうちの 1 つがこのスレッドを意図している可能性がある場合は問題になりません)。 .
複数のプロデューサーとコンシューマーがある場合、キューはスレッドセーフです。