Как вы ждете, пока сетевой поток получит данные для чтения?

В моем приложении есть рабочий поток, отвечающий за три разные вещи. Запросы для двух заданий появляются в написанных мною очередях, другое задание активируется, когда в потоке сети появляется запрос. Я хотел бы, чтобы моя рабочая нить ждала, когда не будет выполнено никакой работы. Это легко с двумя очередями, так как они предоставляют 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
    }
}

Кто-нибудь знает способ получить WaitHandle, который устанавливается, когда NetworkStream имеет данные?

Ответы на вопрос(2)

Ваш ответ на вопрос