Jak czekać, aż strumień sieci będzie miał dane do odczytania?

W aplikacji mam wątek roboczy, który odpowiada za trzy różne rzeczy. Żądania dla dwóch zadań są wyświetlane w kolejkach, które napisałem, drugie zadanie jest aktywowane, gdy żądanie pojawia się w strumieniu sieci. Chciałbym, aby mój wątek robotniczy poczekał, kiedy nie ma pracy do wykonania. Jest to łatwe w przypadku dwóch kolejek, ponieważ ujawniają one ManualResetEvent, który jest ustawiony, gdy mają elementy, jednak wydaje się, że NetworkStream tego nie posiada. NetworkStream został pobrany z TcpClient.

To, czego potrzebuję, to kod wyglądający mniej więcej tak:

while (notDone)
{
    WaitHandle.WaitAny(new WaitHandle[] { queue1.HasData, queue2.HasData, netStream.HasData } );
    // ...
    if (netStream.DataAvailable)
    {
        netStream.Read(buffer, 0, 20);
        // process buffer
    }
}

Czy ktoś zna sposób na uzyskanie WaitHandle ustawionego, gdy NetworkStream ma dane?

questionAnswers(2)

yourAnswerToTheQuestion