我的应用程序中有一个工作线程,负责三件不同的事情。我写的队列中出现了两个作业的请求,当请求出现在网络流上时,另一个作业被激活。我希望我的工作线程在没有工作要做时等待。这对于两个队列来说很容易,因为它们公开了一个在它们有项目时设置的 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
}
}
有谁知道当 NetworkStream 有数据时设置 WaitHandle 的方法?