Einzelnen Beitrag anzeigen

nytaiceman

Registriert seit: 15. Dez 2005
Ort: Schweiz, Bern
58 Beiträge
 
Delphi XE3 Professional
 
#4

AW: TTask bei FMX startet nicht (Delphi 10.2)

  Alt 17. Dez 2017, 14:34
Vielen Dank an Euch beide!

Mir war die Reihenfolge klar, ich möchte ja den Taskinhalt asynchron ausführen.
Nur habe ich nicht verstanden das ich die Threads (Main und den Task) synchronisieren muss resp. dass die VCL Implementierung auch ohne den Sync funktionierte.

Ich habe nun bei beiden Beispielen denselben Aufruf laufen lassen und das Ergebnis ist bei beiden dasselbe und korrekt:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
// uses System.Threading
var
  aTask: ITask;

begin
 ShowMessage ('Before TTask');

  aTask := TTask.Create (procedure
  begin

    sleep (5000);

    TThread.Synchronize(nil,
      procedure
      begin
        ShowMessage ('During TTask');
      end);

  end);

 aTask.Start;

 ShowMessage ('After TTask');
end;
Die Messages erscheinen bei VCL und FMX in der gewünschten Reihenfolge:
1. "Before TTask"
2. "After TTask"
3. "During TTask"
Einfach ist nur einfach, wenn Einfach auch einfach ist!
Vermeintlich einfache Workarounds führen irgendwann zu Problemen!

Geändert von nytaiceman (17. Dez 2017 um 14:36 Uhr) Grund: Code Beispiel vervollständigt
  Mit Zitat antworten Zitat