Einzelnen Beitrag anzeigen

Benutzerbild von hazard999
hazard999

Registriert seit: 2. Okt 2008
38 Beiträge
 
#5

Re: Wie stelle ich sicher dass ich nichts von VCL verwende

  Alt 31. Okt 2008, 07:45
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
  Mit Zitat antworten Zitat