终止接收自定义消息后,CPU跑飞了?求解,救命!
停止接收自定义消息后,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调用的。我建议你改,接收和应答单独放到线程里面,不要放到主线程