在我的 C# 应用程序中,我有一个线程,它基本上不断地从 TcpClient 读取,直到被告知停止。我为此目的使用 WaitHandles,例如:
私人 ManualResetEvent 停止; 私人无效接收() { 而 (!this.stopping.WaitOne(10)) { 而(this.client.Available > 0) { // 读取和处理数据 } } }
如您所见,我正在等待线程被告知停止。如果还没有,它会从 TcpClient 读取所有数据并循环。
我遇到的问题是 10 毫秒的延迟,我宁愿没有。我可以减少它,但我更喜欢程序将暂停直到线程被告知停止或更多数据可用的解决方案。
实际上,我想要的是一个 WaitHandle,它告诉我 TcpClient 上何时有数据可用。这样,我可以使用 WaitHandle.WaitAny。有什么办法可以做到这一点,或者有人可以建议一种替代方法吗?
这不能成为一个麻烦,因为它需要一个相当高性能和轻量级的后台进程。