这里的快速问题:使用与NetworkStream类(由TcpClient生成)的异步通信有什么明显的好处,即BeginRead/BeginWrite方法,而不是运行单独的线程并对其使用同步操作,即读/写?我的印象是(很可能是非常错误的)异步操作是非阻塞的并且在OS级别(在TCP堆栈中执行?)执行,并带有回调的线程池项.我认为它肯定必须与在同步方法上调用ThreadPool.QueueUserWorkItem不同,或者提供它时没有什么意义.现在,我相信这至少是文件I/O所发生的事情(操作系统级调用),但如果有人可以请澄清有关网络(TCP)通信的问题,这将是最有帮助的.基本上,我想知道这两种方法是否有任何特定的好处(除了能够在同步调用中使用BinaryReader/StreamReader类的明显优势).
不同之处在于,如果使用Worker线程调用同步版本,则会阻塞阻塞调用中的一个线程.
虽然Begin方法不会占用线程,但会在适当的I/O信号上使用回调,然后回调将在池中的线程上运行.