Kir*_*ril 28 c# sockets asynchronous connect disconnect
BeginConnect和之间有什么区别ConnectAsync?随后,BeginDisconnect和之间有什么区别DisconnectAsync?
该ConnectAsync文件规定:
"开始远程主机连接的异步请求."
该BeginConnect文件还指出:
"开始远程主机连接的异步请求."
无论是DisconnectAsync和BeginDisconnect也说出了同样的事情:
"开始异步请求以断开与远程端点的连接."
这些方法对与应该使用哪种方法之间的区别是什么?
Teo*_*gul 14
Socket.ConnectAsync提供SocketAsyncEventArgs作为参数,与BeginConnect提供的3个参数相比,它包含更多信息.另外我知道ConnectAsync比BeginConnect晚推出并解决了与超时相关的一些问题(现在不记得这个讨论的来源).在可能的情况下首选ConnectAsync(尽管它需要min .NET 2.0 SP1).
关于回调的ConnectAsync有一个问题.如果这是值得关注的话,以下是关于它的讨论:使用System.Net.Sockets.Socket.AcceptAsync模型时的堆栈溢出和AsyncCallBack CompletedSynchronously
Silverlight中不支持BeginConnect方法(仅支持ConnectAsync),因此如果您打算开发客户端Silverlight应用程序,这可能是另一个问题.
两种方法中使用的模式也不同.以下是讨论:.NET中套接字的Begin*和*Async之间是否存在性能差异?
spe*_*der 11
引入了XXXXAsync方法,因为它们可以减少服务器连接多个客户端时发生的内存抖动.与文档中描述的池相结合,与旧的BeginXXX API相比,使用此API可显着减少GC必须执行的工作量.
该文件说以下:
这些增强功能的主要特征是避免在高容量异步套接字I/O期间重复分配和同步对象.当前由System.Net.Sockets.Socket类实现的Begin/End设计模式需要为每个异步套接字操作分配System.IAsyncResult对象.
因此,除非您为数千个连接的客户端编写服务器,否则我不会打扰XXXXAsync.API实现起来相当困难,而且对企业级服务以外的任何东西都没什么好处.
| 归档时间: |
|
| 查看次数: |
12996 次 |
| 最近记录: |