关于VC++在新线程中CreateDialog引发非法操作内存错误。
代码:
UINT WINAPI BeginDebug(void *Param)
{
MainHwnd = CreateDialogW(DllBase,MAKEINTRESOURCE(MAIN_DIALOG),NULL,DlgProc);
return 1;
}
BOOL LaunchDebugger(long LaunchParam)
{
ProcHandle = _beginthreadex(NULL,0,&BeginDebug,NULL,0,&ProcID);
if (ProcHandle == 0 || ProcHandle == -1)
return FALSE;
else
return TRUE;
}
这样子写的话,新线程倒是能成功创建,但是一执行到CreateDialog,就会崩溃,看地址应该是user32出的问题。
如果不用新线程CreateDialog,直接CreateDialog,就是好的。也不会崩溃,这是什么原因啊? vc++ 线程
[解决办法]
多线程同步的问题。在C#中一般用委托来解决,C/C++中一般使用消息或者回调函数来解决。