![]() |
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
|
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
![]() ... könnten ja Tutorialschreiber mal drunter fallen ;-) (...vor allem wenn man weiß (oder davon ausgehen kann), dass diese sich mit Delphi keine goldene Nase verdienen, sondern das eher aus Interesse unterstützen...) |
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
|
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
|
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
|
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
|
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
Aber es stimmt für die mobilen Plattformen und FMX nicht. Beispiel:
Delphi-Quellcode:
hat nicht das gleiche verhalten!
procedure TForm202.Button1Click(Sender: TObject);
begin Sleep(1000); Caption := '42'; end; procedure TForm202.Button2Click(Sender: TObject); begin TTask.Run(Procedure begin TThread.Queue(NIL,Procedure begin Sleep(1000); Caption := '42'; end; end; end; Besser wäre natürlich: 8-)
Delphi-Quellcode:
Uses
Delphiprofi.FDK.Idleworker; procedure TForm202.Button3Click(Sender: TObject); begin TIdleworker.Default.Execute( Procedure begin Sleep(1000); Caption := '42'; end,true); end; |
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
Delphi-Quellcode:
völlig unbekannt. Sollte es sich dabei um
TThread.Query
Delphi-Quellcode:
handeln, verlagerst du das
TThread.Queue
Delphi-Quellcode:
ja wieder in den Hauptthread.
Sleep
Ich hätte jetzt eher diesen Ansatz gewählt:
Delphi-Quellcode:
procedure TForm202.Button2Click(Sender: TObject);
begin TTask.Run( Procedure begin Sleep(1000); TThread.Query(NIL, Procedure begin Caption := '42'; end; end; end; |
AW: Ist die Verwendung von TTask so korrekt?
Zitat:
Der Sinn ist ganz einfach. Bei einem Button Klick oder anderen User-Aktionen, starten diese im UI-Thread einen Timer der die Änderungen auf dem Bildschirm (Mouseover/Buttondown/ButtonUp usw.) anzeigt. Über den TTask.Run starte ich meine Aktionen verzögert. Der Queue Befehl sorgt dafür, dass ich dem UI_Thread die Ausführung überlasse. Wie gesagt der bessere Weg hierfür ist der OnIdleEvent! Zitat:
Mavarik :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz