我的应用程序旨在侦听来自TCP客户端的传入消息。我使用的是TCPListner和"BeginAcceptTcpClient“方法。在建立连接时,我所做的是为每个连接创建一个新线程,使用:ThreadPool.QueueUserWorkItem(新WaitCallback(HandleClientCommNew),client);我在这里的问题是,当回调函数完成其工作时,线程会发生什么情况。listener = (TcpListener)ar.AsyncState;
T
重新输入的一个主要问题是,如果使用.Wait()或.Result,可能会导致死锁,原因如下:
等待完成后,它尝试在捕获的上下文中执行异步方法的其余部分。但是这个上下文中已经有一个线程,它(同步地)等待异步方法完成。这是因为SynchronisationContext使用的单个线程以及它的permits only one chunk of code to run at a time.方式。在一个Task.Factory.StartNew应用程序中<em