投稿

ラベル(無名関数)が付いた投稿を表示しています

Delphi 無名メソッド(無名関数)で簡単スレッド + OnTerminate

無名メソッドで、簡単使い捨て?スレッド Caption := 'Wait...'; TThread.CreateAnonymousThread( procedure begin Sleep(3000); TThread.Synchronize(TThread.CurrentThread, procedure() begin Form1.Caption := 'Done'; end); end).Start; CreateAnonymousThread メソッドは、 Suspend = True FreeOnTerminate = True で、Thread を生成するので、Start メソッドを付けてスレッドを開始させるだけ 【追記】 OnTerminate も無名メソッドで記載してみる type TNotifyEventProc = reference to procedure(Sender: TObject); // ------------- procedure TForm1.Button1Click(Sender: TObject); procedure MethRefToMethPtr(const MethRef; var MethPtr); type TVtable = array [0 .. 3] of Pointer; PVtable = ^TVtable; PPVtable = ^PVtable; begin TMethod(MethPtr).Code := PPVtable(MethRef)^^[3]; TMethod(MethPtr).Data := Pointer(MethRef); end; function MakeNotify(const Proc: TNotifyEventProc): TNotifyEvent; begin MethRefToMethPtr(Proc, Res...