我有一个基于线程的消息队列,该线程处理被抛出的消息。由于线程中的某些活动可能是 VCL 命令,因此它们在同步中执行。只要调用同步,线程就会挂起。示例代码:
TMessageQ = class (TThread)
...
procedure TMessageQ.do_msg;
begin
case CurrentMessage.Command of
cQSize: if Assigned (OnSize) then OnSize (CurrentMessage);
cQReady: if Assigned (OnReady) then OnReady (CurrentMessage);
end; // case
end; // do_msg /
procedure TMessageQ.doTask (Sender: TObject);
begin
while FQ.Count > 0 do
begin
FSection.Enter;
try
CurrentMessage := FQ.Dequeue;
finally
FSection.Leave;
end; // try..finally
Synchronize (do_msg);
end; // while
end; // doTask //
do_msg 中的任何语句都不会被处理。有人知道我做错了什么吗?