工作线程中调用GetActiveDocument()出错,该如何处理
工作线程中调用GetActiveDocument()出错在文档类中新起了一个工作线程用来侦听网络上的消息。当接收到消息
工作线程中调用GetActiveDocument()出错
在文档类中新起了一个工作线程用来侦听网络上的消息。当接收到消息时,需要执行如下代码
C/C++ codeCProxyApp *pApp = (CProxy *)AfxGetApp();CMainFrame *pMainFrame = (CMainFrame *)pApp->m_pMainWnd;CProxyDoc *pDoc = (CProxyDoc *)pMainFrame->GetActiveDocument();
进而通过 pDoc 调用文档类中的函数。
但现在执行到 GetActiveDocument() 时就出现了断言错误。
调试发现,断言处的指针并不为 NULL;而且 pMainFrame.CFrameWnd.m_pViewActive.m_pDocument 中第一项的确是 [CProxyDoc]。
为什么会处错误呢?请求指教!!!
[解决办法]你上面的代码是在线程函数中写的吧,应该是上面的函数返回的指针无效了。
[解决办法]MFC的一些全局函数和线程状态相关,最好别这么使用。需要调用的函数可以放到全局或通过别的方式传入线程。