【发布时间】:2011-03-28 20:05:01
【问题描述】:
我正在使用 NetworkStream 和 TcpClient 通过 BeginRead 异步接收数据。我需要对此操作应用超时,这样在指定的时间后读取将被中止。
据我所知,NetworkStream 或 TcpClient 不支持此功能 - 有一个 ReceiveTimeout 属性,但这似乎仅适用于同步等效项 - 'Read'。
甚至底层的 Socket 类似乎也不支持其 BeginReceive 方法中的超时。
我已经搜索过这个问题并且我看到的唯一建议的解决方案是设置另一个后台线程以取消操作,如果它没有在超时期限内完成。这似乎是一个可怕的黑客攻击。肯定有更好的方法吗?
【问题讨论】:
标签: asynchronous tcpclient networkstream beginreceive beginread