Wie können Sie darauf warten, dass ein Netzwerk-Stream Daten zum Lesen enthält?

Ich habe einen Arbeitsthread in meiner Anwendung, der für drei verschiedene Dinge verantwortlich ist. Anforderungen für zwei der Jobs werden in Warteschlangen angezeigt, die ich geschrieben habe. Der andere Job wird aktiviert, wenn eine Anforderung in einem Netzwerkstream angezeigt wird. Ich möchte, dass mein Arbeitsthread wartet, wenn keine Arbeit zu erledigen ist. Dies ist mit den beiden Warteschlangen einfach, da sie ein ManualResetEvent bereitstellen, das festgelegt wird, wenn sie über Elemente verfügen, der NetworkStream scheint dies jedoch nicht zu haben. Der NetworkStream wurde von einem TcpClient abgerufen.

Ich bin auf der Suche nach Code, der ungefähr so ​​aussieht:

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

Kennt jemand eine Möglichkeit, ein WaitHandle zu erhalten, das festgelegt wird, wenn ein NetworkStream Daten enthält?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage