C#异步套接字 - 总是调用异步回调吗?

时间:2012-03-16 10:01:14

标签: c# networking asynchronous network-programming

如果我使用:

connectionSocket.BeginSend(data, 0, length, SocketFlags.None, out error, new AsyncCallback(SendDataDone), state);

即使在同步完成操作的情况下也调用SendDataDone回调,或者我应该测试asyncRes.CompletedSynchronously并知道它是否返回true我的回调未被调用?

我希望回调总是被调用......

2 个答案:

答案 0 :(得分:1)

根据文件:

  

您的回调方法应该调用EndSend方法。当你的   应用程序调用BeginSend,系统将使用单独的线程来   执行指定的回调方法,并在EndSend上阻塞,直到   Socket发送请求的字节数或抛出异常。

因此,只要没有任何东西杀死线程,你就可以迎合可能存在的争论异常而且你已经准备好等待,一切都应该好。您可能只需要知道处理可能的SocketException或ObjectDisposedException。

答案 1 :(得分:1)

据说,是的,请参阅https://stackoverflow.com/a/635951/555547