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

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

2013-01-01 
停止接收自定义消息后,CPU跑飞了?????求解,救命!!!我在dll里做了个抛出windows自定义消息的,然后在C++buil

停止接收自定义消息后,CPU跑飞了?????求解,救命!!!
我在dll里做了个抛出windows自定义消息的,然后在C++builder里接收消息 代码如下:
dll:

 
#define ROOM_MSG  WM_USER + 300
  ::SendMessage(Hwnd,ROOM_MSG,NULL,(LPARAM)&c_buff);//发送windows消息

BCB  TOOLs.cpp :


    #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:

//关闭端口
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调用的。我建议你改,接收和应答单独放到线程里面,不要放到主线程

热点排行