Como você espera que um fluxo de rede tenha dados para ler?

Eu tenho um segmento de trabalho no meu aplicativo que é responsável por três coisas diferentes. Solicitações para dois dos trabalhos aparecem em Filas que eu escrevi, o outro trabalho é ativado quando uma solicitação é exibida em um fluxo de Rede. Gostaria que meu thread de trabalho esperasse quando não há trabalho a ser feito. Isso é fácil com as duas filas à medida que expõem um ManualResetEvent que é definido quando eles têm itens, no entanto, o NetworkStream parece não ter isso. O NetworkStream foi recuperado de um TcpClient.

O que eu estou procurando é um código parecido com isto:

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

Alguém sabe uma maneira de obter um WaitHandle que é definido quando um NetworkStream tem dados?

questionAnswers(2)

yourAnswerToTheQuestion