一个串行通讯的程序,只要接收到串口信息(字符串)就把字符串append到FcomList(TstringList类型,只有Watch这个线程访问这个变量)中,然后调用 PostThreadMessage(Watch.ThreadID,UM_NewTask,0,0)向Watch线程发送新任务的消息,可是Watch线程有时截获不到这个消息,而且只要有一次截获不到以后就一直截获不到。请大家帮忙分析一下,先表示感谢
Watch线程中处理代码如下:
procedure TWatch.Execute;
var
i,j:integer;
m:MSG;
p:pchar;
begin
FreeOnTerminate:=True;
while Not Terminated do
if WaitMessage then
begin
if PeekMessage(m,0,0,0,PM_REMOVE) then
begin
if m.message=UM_Close then
break;
if (m.message=UM_NewTask) then
while FcomList.count>0 do
begin
//处理程序
end;
end;
end;
Terminate;
end;
Watch线程中处理代码如下:
procedure TWatch.Execute;
var
i,j:integer;
m:MSG;
p:pchar;
begin
FreeOnTerminate:=True;
while Not Terminated do
if WaitMessage then
begin
if PeekMessage(m,0,0,0,PM_REMOVE) then
begin
if m.message=UM_Close then
break;
if (m.message=UM_NewTask) then
while FcomList.count>0 do
begin
//处理程序
end;
end;
end;
Terminate;
end;
死循环了?