多线程中SendMessage在Debug版本中可用而在Release中出错,为啥?
我写了一个多线程的程序。如下:
在主窗口中有一个Button和一个Edit。Button创建一个线程,线程的作用就是把一个全局变量加1,然后发送消息到主窗口,主窗口将结果显示在Edit上。工作线程如下:
extern CTheGlobal global;
UINT Increase(LPVOID lParam){
while(1){
global.m_nNow ++;
::SendMessage(global.m_hWnd,IDM_ONINCREASE,0,0);
Sleep(500);
}
}
其中global是全局变量,m_hWnd中储存着窗口的句柄。主窗口中收到IDM_ONINCREASE后触发void CSendMessageMTDlg::OnIncrease()函数。函数如下:
void CSendMessageMTDlg::OnIncrease()
{
CString s;
s.Format("%d",global.m_nNow);
SetDlgItemText(IDC_EDIT1,s);
}
程序在Debug版本中运行的很好,但是做成Release版本后就出现问题。有人碰见过这个问题么?
我把我的程序放在http://www.webrobber.com/SendMessageMT.rar上,请大家帮忙看一下。先谢了。