【发布时间】:2010-10-08 23:01:40
【问题描述】:
这里的快速问题:与 NetworkStream 类(由 TcpClient 生成)使用异步通信有什么明显的好处,即 BeginRead/BeginWrite 方法,而不是运行一个单独的线程并对其使用同步操作,即读/写?我的印象是(这很可能是完全错误的)异步操作是非阻塞的,并且在操作系统级别(可能在 TCP 堆栈中?)执行,并带有一个用于回调的线程池项。我认为它肯定与在同步方法上调用 ThreadPool.QueueUserWorkItem 不同,否则提供它就没有什么意义了。现在,我相当有信心这至少是文件 I/O 发生的事情(操作系统级调用),但如果有人能澄清有关网络(TCP)通信的问题,那将是最有帮助的。基本上,我想知道这两种方法是否有任何特定的好处(除了能够将 BinaryReader/StreamReader 类与同步调用一起使用这一显而易见的好处)。
【问题讨论】:
标签: .net networking sockets asynchronous tcp