在我的C#应用程序中,我有一个线程,基本上不断从TcpClient中读取,直到告诉停止。我用WaitHandles为了这个目的,例如:TcpClient - 等待数据可用
private ManualResetEvent stopping; private void Receive() { while (!this.stopping.WaitOne(10)) { while (this.client.Available > 0) { // Read and process data } } }
正如你所看到的,我等着被告知线程停止。如果没有,它会从TcpClient中读取所有数据并循环。
我的问题是10ms的延迟,我宁愿没有。我可以减少它,但我更喜欢一个解决方案,在该解决方案中,程序将暂停,直到线程被告知停止或更多数据可用。
实际上,我要的是一个WaitHandle的,告诉我,当数据可用上的TcpClient。这样,我可以使用WaitHandle.WaitAny。有什么办法可以做到这一点,或有人可以建议一种替代方法吗?
这不可能是一个bodge因为它需要一个相当高性能 - 和 - 轻量级后台进程。