异步回调,生存期的问题

Lonely_Snow Lonely_Snow 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
DWORD WINAPI ThreadProc(LPVOID lpParameter)
{
GMXX* gm = (GMXX*)lpParameter;

if (WaitForSingleObject(gm->m_readovp.hEvent, MAX_TIMEOUT) == WAIT_OBJECT_0)
{
ResetEvent(gm->m_readovp.hEvent);
if (gm->m_callback)
{
gm->m_callback->ReadCallback(gm->m_data, _tcslen(gm->m_data));
}
}
else
{
CancelIoEx(gm->m_hDevice, NULL);
}

return 0;
}

在上面的代码中,如果gm已经析构了,那么引用它的成员的时候,程序就会crash,请教各位大虾,遇到这样的问题,如何处理?我尝试过RegisterWaitForSingleObject,UnregisterWaitEx,但不清楚UnregisterWaitEx应该在什么时候去调,msdn上说,必须调用UnregisterWaitEx,并且不能在调用RegisterWaitForSingleObject注册的回调中调用。
...全文
评论 11
收藏 已收藏
分享
返回顶部
Lonely_Snow
进程/线程/DLL 15,466 成员 49,169 内容