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)