C#异步套接字-总是调用异步回调
本文关键字:异步 调用 回调 套接字 | 更新日期: 2023-09-27 18:27:56
如果我使用:
connectionSocket.BeginSend(data, 0, length, SocketFlags.None, out error, new AsyncCallback(SendDataDone), state);
即使在操作同步完成的情况下,SendDataDone回调也会被调用吗?还是我应该测试asyncRes.CompletedSynchronous并知道它是否返回true,即我的回调没有被调用?
我希望总是调用回调。。。
假设是的,请参阅https://stackoverflow.com/a/635951/555547.
根据文档:
回调方法应该调用EndSend方法。当您应用程序调用BeginSend,系统将使用一个单独的线程执行指定的回调方法,并将在EndSend上阻塞,直到套接字发送请求的字节数或抛出异常。
因此,只要没有什么会扼杀线程,你已经考虑到了可能的参数异常,并准备等待,一切都应该好起来。您可能只需要知道如何处理可能的SocketException或ObjectDisposedException。