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?