Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Mehrfachklick auf Schaltfläche Problem

  Alt 11. Jul 2015, 09:50
Der Kern des Problems liegt hier
Delphi-Quellcode:
procedure TMyForm.Button1Click( Sender: TObject );
begin
  Button1.Enabled := false;
  // Irgendwas ausführen, was ein klein wenig dauert
  Button1.Enabled := true;
end;
In der Zeit, wo diese Ausführung läuft ist der UI-Thread gesperrt, bzw. beschäftigt und alle auftretenden Aktionen (Klick auf einen Button, Eingabe von Text) werden nicht abgearbeitet. Diese laufen aber in eine Message-Queue und werden abgearbeitet sobald der UI-Thread wieder Zeit hat.

Und da zu diesem Zeitpunkt der Button wieder aktiv ist, wird auch brav der Button-Klick ausgeführt

Darum sollten alle Aktionen, die länger als 50 Millisekunden dauern, in einen Thread ausgelagert werden.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (11. Jul 2015 um 12:23 Uhr)
  Mit Zitat antworten Zitat