首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

停止接收自定义消息后,CPU跑飞了?求解,救命!解决办法

2012-04-04 
停止接收自定义消息后,CPU跑飞了?????求解,救命!!! - C++ Builder / Windows SDK/API我在dll里做了个抛出w

停止接收自定义消息后,CPU跑飞了?????求解,救命!!! - C++ Builder / Windows SDK/API
我在dll里做了个抛出windows自定义消息的,然后在C++builder里接收消息 代码如下:
dll:
[code=C/C++][/code] 
#define ROOM_MSG WM_USER + 300
  ::SendMessage(Hwnd,ROOM_MSG,NULL,(LPARAM)&c_buff);//发送windows消息

BCB TOOLs.cpp :
[code=C/C++][/code]

  #define ROOM_MSG WM_USER + 300

  void UMReceiveRoomMessage(TMessage Message);
  BEGIN_MESSAGE_MAP
  MESSAGE_HANDLER(ROOM_MSG,TMessage,UMReceiveRoomMessage);
  END_MESSAGE_MAP(TForm);

在BCB里终止dll后,其实就是关闭串口
dll:
[code=C/C++][/code]
//关闭端口
int APIENTRY rs485_exit(int port)

if( comid==port)
{

delay();
Hwnd=NULL;
CloseComm();
OnDestroy();
return 0;
}
else
{
return ERR;
}

}
void OnDestroy()
{
bend=TRUE;//改变变量,线程结束
WaitForSingleObject(hThread,100/*毫秒*/);//等待线程结束
CloseHandle( hThread);//删除线程


终止之后,BCB里的自定义消息接收函数还在跑,结果就悲剧的看到CPU达到了99% 求大牛赐教,到底是什么原因,或者如何关闭自定义消息 的接收

[解决办法]
看线程开头的提示,是要用Synchronize调用的。我建议你改,接收和应答单独放到线程里面,不要放到主线程

热点排行