【发布时间】:2018-02-18 06:03:18
【问题描述】:
我正在 UWP 平台上编写一个将用于移动 UWP 应用程序的类库。
库需要通过基于 TCP 的专有协议与外部设备通信。 该协议要求接收或发送操作等待一段准确的时间。
我实际上已经使用 ReceiveAsync 和 SendAsync 实现了通信层,“等待”它们,正如 TPL 模式建议的那样。
在大量阅读该论点后,我发现无法在本地设置读/写操作超时。 可以使用一些技巧来实现超时过程(例如:.WaitAny 或可超时的令牌),但我所有的阅读都让我明白了这个事实:
只有关闭套接字才能中断 ReceiveAsync 或 SendAsync 任务
我的问题是:这是真的吗? 只能关闭/处理套接字才能阻止超时的接收/发送?
如果这是真的,由于我正在实施的协议不允许我打开/关闭套接字数百次,我需要恢复到同步接收/发送版本实际处理优雅超时的命令。
我已经阅读了很多关于论点的内容,并且我很确定我所写的内容,但老实说,我希望有一种方法可以使用 TPL 模式来处理超时,而无需关闭套接字...
谢谢。
【问题讨论】:
标签: c# sockets timeout sendasync