什么时候关闭CAsyncSocket是安全的?

mor*_*des 7 c++ sockets windows mfc casyncsocket

CAsyncSocket如果我CAsyncSocket在调用之后Connect但在OnConnect调用回调之前删除了应用程序,则会崩溃我的应用程序. ASSERT(pSocket != NULL)失败CAsyncSocket::DoCallBack并且应用程序退出.

换句话说,如果我创建一个CAsyncSocket,尝试将其连接到服务器,然后在该连接成功或失败之前将其终止,我就会遇到问题.我可以通过实现OnConnect和设置一个标志来避免这种特殊的崩溃,该标志指示连接尝试已完成.如果标志为false,我知道删除是不安全的.

在删除对象之前是否还需要检查其他情况?有没有一种方法来检查它是否安全?或者我需要实现我可能会启动任何操作所有的回调(OnReceive,OnSend,OnConnect),并确保这些回调已经叫什么名字?