Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#2

AW: TTask.Run( hat im Debugger lange Startverzögerung

  Alt 15. Jul 2019, 19:11
Also ich habe eine VCL-Anwendung und da passiert bei
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    procedure LogMsg(const AMsg: string);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  LogMsg('Button1Click ENTER');
  TTask.Run(
    procedure
    begin
      LogMsg('Task ENTER');
      TThread.Sleep(2000);
      LogMsg('Task EXIT');
    end);
  LogMsg('Button1Click EXIT');
end;

procedure TForm1.LogMsg(const AMsg: string);
var
  callingNow: TDateTime;
begin
  callingNow := System.SysUtils.Now();
  TThread.Synchronize(nil,
    procedure
    var
      loggingNow: TDateTime;
    begin
      loggingNow := System.SysUtils.Now();
      Memo1.Lines.Add(string.Format('%s - %s - %s', [FormatDateTime('hh:nn:ss.zzz', loggingNow), FormatDateTime('hh:nn:ss.zzz', callingNow), AMsg]));
    end);
end;
das
Code:
20:08:53.385 - 20:08:53.385 - Button1Click ENTER
20:08:53.385 - 20:08:53.385 - Button1Click EXIT
20:08:53.386 - 20:08:53.385 - Task ENTER
20:08:55.387 - 20:08:55.387 - Task EXIT
Also eigentlich kein Delay (was der Rede wert wäre).

Ok, das war ohne Debugger, mit Debugger sieht es so aus
Code:
20:12:50.266 - 20:12:50.266 - Button1Click ENTER
20:12:50.266 - 20:12:50.266 - Button1Click EXIT
20:12:50.317 - 20:12:50.315 - Task ENTER
20:12:52.319 - 20:12:52.319 - Task EXIT
Unter iOS kann man durchaus ein langsameres Verhalten erwarten gerade weil da auch die Kommunikation zwischen Device und Debugger wesentlich umständlicher ist.

Prüfst du das mit einem echten Device oder mit dem Simulator?
(Ich würde beim Simulator eine bessere Performance erwarten)

Geändert von Schokohase (15. Jul 2019 um 19:16 Uhr)
  Mit Zitat antworten Zitat