如果我使用:
connectionSocket.BeginSend(data, 0, length, SocketFlags.None, out error, new AsyncCallback(SendDataDone), state);
即使在同步完成操作的情况下也调用SendDataDone回调,或者我应该测试asyncRes.CompletedSynchronously并知道它是否返回true我的回调未被调用?
我希望回调总是被调用......
答案 0 :(得分:1)
根据文件:
您的回调方法应该调用EndSend方法。当你的 应用程序调用BeginSend,系统将使用单独的线程来 执行指定的回调方法,并在EndSend上阻塞,直到 Socket发送请求的字节数或抛出异常。
因此,只要没有任何东西杀死线程,你就可以迎合可能存在的争论异常而且你已经准备好等待,一切都应该好。您可能只需要知道处理可能的SocketException或ObjectDisposedException。
答案 1 :(得分:1)