私のアプリケーションには、3 つの異なることを担当するワーカー スレッドがあります。ジョブのうちの 2 つのリクエストは、私が作成したキューに表示されます。もう 1 つのジョブは、ネットワーク ストリームでリクエストが表示されるとアクティブ化されます。実行する作業がない場合、ワーカー スレッドを待機させたいと思います。2 つのキューでは、アイテムがあるときに設定される ManualResetEvent が公開されるため、これは簡単ですが、NetworkStream にはこれがないようです。NetworkStream が TcpClient から取得されました。
私が求めているのは、次のようなコードです。
while (notDone)
{
WaitHandle.WaitAny(new WaitHandle[] { queue1.HasData, queue2.HasData, netStream.HasData } );
// ...
if (netStream.DataAvailable)
{
netStream.Read(buffer, 0, 20);
// process buffer
}
}
NetworkStream にデータがあるときに設定される WaitHandle を取得する方法を知っている人はいますか?