我创建了一个多子应用程序。应用程序窗口 (W[n]: TMyWindows) 都是相同的,并且都有一个与之关联的私有对象类实例 (E: TMyObject)。子窗口通过这个对象生成一些消息。我在主应用程序中创建了两个线程,它们根据消息的内容处理这些消息。例如,让我们有以下异步调用:
W[1].E.Service(thread1service)
W[2].E.Service(thread2service)
TMyObject.Service(servicetype) 是
case servicetype of
thread1service: PostThreadMessage(thread1id,...);
thread2service: PostThreadMessage(thread2id,...);
end;
现在,在每个线程的执行方法中,我有类似的东西:
while not terminated do
begin
...
if peekmessage(msg,0,thread1message_1,thread1message_n,pm_remove) then
process message
do other things;
end
一切都很好,除了第二个线程没有收到任何消息。你知道为什么吗?