主窗口创建线程和事件句柄:
var
ASecurity_Attributes: SECURITY_ATTRIBUTES;
i: Integer;
begin
ASecurity_Attributes.nLength := SizeOf(SECURITY_ATTRIBUTES);
ASecurity_Attributes.lpSecurityDescriptor := nil;
ASecurity_Attributes.bInheritHandle := False;
HWaitEvent := CreateEvent(@ASecurity_Attributes, True, False, 'Client_Table');
//任务管理中心
HCommEvent := CreateEvent(@ASecurity_Attributes, True, False, 'Client_Table2');
//通信交换中心
ResetEvent(HWaitEvent);
ResetEvent(HCommEvent);
CommCenterThread := TCommCenterThread.Create(SysData,MSComm,'DB_HYMMS',HCommEvent,HWaitEvent);
CommCenterThread.Resume;//通信交换线程
TaskThread := TTaskThread.Create(DMW_Main.DB_Main.DatabaseName);
TaskThread.Resume;//任务管理线程
end;
任务管理单元发送消息给通信交换:
PostThreadMessage(CommCenterThread.ThreadID,SX_RTDETECTING,0,0);
//发送消息
ResetEvent(HWaitEvent);
//任务管理中心事件句柄设置为无信号状态
SetEvent(HCommEvent);
//信息交换中心时间句柄设置为发信号状态
case WaitForSingleObject(HWaitEvent,INFINITE) of //等待信息交换中心响应
。。。。。。。
信息交换单元接收任务管理发送的消息:
WaitForSingleObject(HCommEvent,INFINITE);
ResetEvent(HCommEvent);
Messagebl := PeekMessage(Mymsg,0,0,0,PM_REMOVE);//检测消息队列是否有消息
if Messagebl then
。。。。。。。
一开始好好的,PostThreadMessage发送后返回的是True,另外一个线程可以接收到,但程序运行10分钟左右后,PostThreadMessage返回的竟然是False
不知道应该如何解决