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

本文关键字:异步 调用 回调 套接字 | 更新日期: 2023-09-27 18:27:56

如果我使用:

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

即使在操作同步完成的情况下,SendDataDone回调也会被调用吗?还是我应该测试asyncRes.CompletedSynchronous并知道它是否返回true,即我的回调没有被调用?

我希望总是调用回调。。。

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

假设是的,请参阅https://stackoverflow.com/a/635951/555547.

根据文档:

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

因此,只要没有什么会扼杀线程,你已经考虑到了可能的参数异常,并准备等待,一切都应该好起来。您可能只需要知道如何处理可能的SocketException或ObjectDisposedException。