我在应用程序中有一个工作线程,负责处理三个不同的任务。其中两个任务的请求出现在我编写的队列中,另一个任务则在网络流上出现请求时激活。当没有工作需要完成时,我希望我的工作线程等待。这对于两个队列很容易实现,因为它们公开了一个 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
}
}
有没有人知道一种获取WaitHandle的方法,当NetworkStream有数据时设置它?