Когда безопасно закрыть CAsyncSocket?

CAsyncSocket вылетает мое приложение, если я удаляю CAsyncSocket после звонка Connect, но до OnConnect обратный вызов был вызван. ASSERT(pSocket != NULL) терпит неудачу в CAsyncSocket::DoCallBack и приложение выходит.

Другими словами, если я создам CAsyncSocket, попробуйте подключить его к серверу, а затем убить его, прежде чем это соединение или успешно или неудачно, у меня проблемы. Я могу избежать этого конкретного сбоя путем реализации OnConnect и устанавливают флаг, который указывает, что попытка соединения завершена. Если флаг ложен, я знаю, что это не безопасно удалить.

Есть ли другие случаи, которые мне нужно проверить перед удалением объекта? Есть ли один способ проверить, безопасно ли это? Или мне нужно реализовать все обратные вызовы для любой операции, которую я мог бы инициировать (OnReceive, OnSend, OnConnect ) и убедитесь, что эти обратные вызовы были вызваны?

6

Решение

Другие решения

Других решений пока нет …