Einzelnen Beitrag anzeigen

Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
763 Beiträge
 
Delphi 11 Alexandria
 
#47

AW: Form in neuem Thread laufen lassen

  Alt 27. Apr 2017, 14:27
Hallo jus

wenn du dein BERECHNE_WAS; in einen weiteren Thread t2 auslagerst, dann kannst du in deinem jetzigen Thread t1 in den meisten Fällen weiterhin GetMessage verwenden. Es macht ja durchaus Sinn, wenn t1 nix tut, wenn t1 nix zu tun hat.

BERECHNE_WAS;: nur in t1 belassen, wenn BERECHNE_WAS; sehr kurz rechnet, sonst blockierst du nun einfach t1 statt wie früher mit einem VCL Fenster den Hauptthread... .

Und noch eine kleine Verbesserungsmöglichkeit. Du hast zuletzt diesen Code veröffentlicht:

Delphi-Quellcode:
while not terminated do
begin
 BERECHNE_WAS; // <-------------- ich würde hier gerne was berechnen lassen
 if PeekMessage(msg, hdlg, 0, 0, PM_REMOVE) then
 begin
  TranslateMessage(Msg);
  DispatchMessage(Msg);
 end;
end;


Verwende besser while PeekMessage anstatt if. Mit if kann dein Thread immer jeweils nur eine Windowsmeldung abarbeiten und muss danach wieder BERECHNE_WAS; ausführen. Viele Windowsmeldungen in der Warteschlange oder längere Ausführungszeiten von BERECHNE_WAS; wären bei Verwendung von if... also nicht gut für dein Fenster.
Michael Gasser
  Mit Zitat antworten Zitat