Windows サービスでホストされている WCF サービスがあります。
WCF サービスにはConcurrentQueue<SomeClass>
.
Windows サービス (WCF サービスをホストする) にもConcurrentQueue<SomeClass>
.
Windows サービスは WCF サービスを開始し、ワーカー スレッドも生成します。
Enqueue
ワーカー スレッドは、 の ( ) オブジェクトをにプッシュSomeClass
しConccurrentQueue
ます。
オブジェクトがキューに入れられたときに WCF サービスがトリガーされ、ConcurrentQueue
それ (およびキューにある可能性のある他のオブジェクト) をデキューし、接続されているすべてのクライアントにメッセージを送信できるようにしたいと考えています。
.
2 つの質問:
注入された ConccurentQueue の「Enqueue」メソッドで WCF サービスを「フック」して、オブジェクトがキューにプッシュされたときに WCF サービスが何かを行うようにするにはどうすればよいですか?
なんとかして「エンキュー」イベントをフックし、Windows サービスのワーカー スレッドが2 つのオブジェクトをキューにエンキューした場合、つまり、WCF サービスの「エンキュー フック」も 2 回「トリガー」することになります。トリガーされた 2 つのイベントが異なるスレッドで発生しますか? どういうわけか、WCF サービスがキューからオブジェクトを順番にプルするようにする必要があります。エンキュー操作ごとに突然それを見たくありません-WCFサービスは別のスレッドでトリガーされ、オブジェクトを引き出します...
私の質問が十分に明確であることを願っています...
.
[アップデート]
Chris と話し合った結果、WCF サービスからワーカー スレッドを分離し、ワーカー スレッドがクライアントとして WCF サービスを呼び出せるようにするのが最善の方法であるという結論に達しました。これは、キューをいじる必要がないことを意味します。