怎样在线程里访问类成员。以下代码能通过编译,运行报错咯。我对VC不熟,请各位给看看,指点一下
hThread=CreateThread(NULL,
0,
(LPTHREAD_START_ROUTINE)lpProcessTask,
NULL,
0,
&ThreadID);static void lpProcessTask()
{ CParseScript objInterpreter;
objInterpreter.ScriptFileName("D:\\ProgramItem\\vc\\IVR\\TelCallPlatform\\Debug\\demo.ivr");
}报错:Unhandled exception at 0x78218eda (mfc80d.dll) in TelCallPlatform.exe: 0xC0000005: Access violation reading location 0x0000227c.

解决方案 »

  1.   

    你的线程函数原型写错了吧,应该是:static DWORD CALLBACK lpProcessTask(LPVOID lpParameter);才对,要访问类成员,可以在CreateThread时传递类的this指针:hThread=CreateThread(NULL,
    0,
    &lpProcessTask,
    this,
    0,
    &ThreadID);然后在lpProcessTask里把参数强转为你的类指针:DWORD CALLBACK lpProcessTask(LPVOID lpParameter)
    {
        CXxxDlg* pThis = (CXxxDlg*)lpParameter;  // CXxxDlg为你的类,后面就通过pThis->来访问类成员了
    }
      

  2.   

    我试过了,你的方法好象不行
    已解决了,用::PostMessage(hWnd,WM_USERMSG,0,0)解决了