gpt4 book ai didi

支持异步操作并遵守超时的.NET TcpClient/NetworkStream 实现

转载 作者:行者123 更新时间:2023-12-03 04:12:43 24 4
gpt4 key购买 nike

根据问题数量、论坛帖子等,BCL 中的 TcpClient/NetworkStream 实现似乎缺乏对取消 IO 操作的适当支持。随着 .NET 4.5 中添加异步方法,这种取消(或适当的超时支持)的缺乏使事情变得更加令人沮丧,因为在执行 IO 时取消拒绝监视其 CancellationToken 的任务变得更加复杂(几乎不可能) .

我见过许多实现,它们会启动额外的线程来监视网络操作,并在出现问题时关闭底层流。在我们试图通过使用异步操作来节省这些资源的世界中​​,这感觉非常肮脏。

任何人都可以指导我处理有效取消/超时网络 IO 操作或实现实际有效的强大的第 3 方实现吗?

最佳答案

取消 IO 并不简单。从 Vista 开始,我们有了 CancelIO 功能,但这是一个相当新的事物,驱动程序需要支持它。

实际上,您能做的最好的事情就是关闭套接字以取消一切。或者,您可以围绕任务实现一个包装函数,该函数可以在设置 CancellationToken 时立即完成。 IO 操作仍将继续,但其结果将被丢弃。

以下是有关该问题的彻底讨论:http://social.msdn.microsoft.com/Forums/da-DK/async/thread/54632b19-0e9c-4078-aa59-c4389e75b187

关于支持异步操作并遵守超时的.NET TcpClient/NetworkStream 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10930052/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com