套接字.end 39;方法调用
本文关键字:方法 调用 end 套接字 | 更新日期: 2023-09-27 18:07:06
读取Socket的MSDN文档。我仍然不完全清楚是否有一个免费的"结束"方法。
所以,在BeginAccept()的情况下,有一个EndAccept()方法完成调用并将IAsyncResult作为参数,允许开发人员访问套接字(通过IAsyncResult)。AsyncState方法)。调用EndAccept(或任何其他Endxxx方法对)在内部清理一些CLR分配的资源,以及提供监视异步操作是否实际完成/错误等功能。
所有这些导致我的问题,是否有需要调用一个结束方法后调用AcceptAsync -或ReceiveAsync为此事?或者它们的End方法整齐地包装在Async中,也许作为Task和ContinueWith?这就是为什么SocketAsyncEventArgs包含Socket本身的原因。
如果有人知道那就太棒了!很多谢谢!
No。没有End方法
应在SocketAsyncEventArgs
中处理Completed
事件。还要注意,ReceiveAsync
等可以直接完成(因此不会触发事件)。
这就是为什么SocketAsyncEventArgs包含Socket本身的原因。
这是因为你应该能够在同一个类中处理所有客户端的IO操作。您还有一个UserToken
属性,可用于存储特定于客户端的信息。
或者它们的End方法整齐地包装在Async中,可能作为Task和ContinueWith
。新的Async模型更像Windows提供的"真实"模型(IO Completion ports)。引入Begin/End结构是为了使异步编程更容易。XxxxAsync模型的创建是为了为那些需要它的应用程序提供更好的性能(我认为有一些应用程序将从中受益,但它对那些应用程序来说真的很重要)