读书人

停止接收自定义消息后CPU跑飞了?求

发布时间: 2012-04-04 16:38:51 作者: rapoo

停止接收自定义消息后,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调用的。我建议你改,接收和应答单独放到线程里面,不要放到主线程

读书人网 >C++ Builder

热点推荐