Създадох многодетно приложение. Всички прозорци на приложението (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
Всичко върви добре, с изключение на това, че втората нишка не получава никакви съобщения. Имате ли идея защо?