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