Application.ProcessMessages sollte auf den Thread sowieso keine Auswirkung haben.
IMHO sollte der Thread eine eigene MessageLoop haben, ProcessMessages arbeitet nur die Loop des Mainthreads ab.
Delphi-Quellcode:
PeekMessage(MsgRec, 0, 0, 0, PM_NOREMOVE);
bWorking := false;
if Terminated then
bWorking := true;
while not Terminated do
begin
if not bWorking then
begin
GetMessage(MsgRec, 0, 0, 0);
while PeekMessage(MsgRec, 0, 0, 0, PM_REMOVE) do
begin
TranslateMessage(MsgRec);
DispatchMessage(MsgRec);
end;
end
else
bWorking := false;
end;
Dieser Code erstellt im Thread eine Message-Loop.
GetMessage wartet auf die nächste Nachricht.
Mit Translate und Dispatch den Inhalt der Loop lesen.
QED => Application.ProcessMessages bewirkt im Thread nix, ausser das du vielleicht eine fürchterliche Race-Condition heraufbeschwörst wenn im MainThread Application.ProcessMessages verwendet wird