多线程中SendMessage在Debug版本中可用而在Release中出错,为啥?

wang1st 2003-03-03 10:07:23
我写了一个多线程的程序。如下:
在主窗口中有一个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上,请大家帮忙看一下。先谢了。
...全文
117 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang1st 2003-03-07
  • 打赏
  • 举报
回复
多谢 DoubleJiang(Double)
问题解决了。
DoubleJiang 2003-03-04
  • 打赏
  • 举报
回复
你把 OnIncrease()
改成 OnIncrease(WPARAM, LPARAM)
一切就OK
yajunmao 2003-03-04
  • 打赏
  • 举报
回复
出现问题呢?你总得讲出来吧
wang1st 2003-03-04
  • 打赏
  • 举报
回复
还是不行啊。我把优化设置程Default和Disable都不行
liuxiangren 2003-03-04
  • 打赏
  • 举报
回复
同意 DoubleJiang(Double) 所说的
demetry 2003-03-04
  • 打赏
  • 举报
回复
去掉优化选项试一试
wang1st 2003-03-03
  • 打赏
  • 举报
回复
我设置/MD选项,我估计不是这个问题。你能下载源程序看看么?
khwidesea 2003-03-03
  • 打赏
  • 举报
回复
请在release版本的编译设置中,设定连接多线程函数库即可。

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧