投稿

8月, 2026の投稿を表示しています

Delphi の TThread.CreateAnonymousThread で ReturnValue を取得する

スレッドの SetReturnValueで投入した値を、取得するには ReturnValue か WaitFor を使うが、無名メソッド TThread.CreateAnonymousThread の戻り値は TThread なため Protected で宣言された ReturnValue メンバへアクセスできない ※OnTerminate で WaitFor を呼び出すとスレッド終了を待ってしまうため、永久に応答しなくなるので注意 TThreadを継承したクラス(上記では TDummyThread)を介して、ReturnValue へアクセス可 type TDummyThraed = class(TThread); AThread := TThread.CreateAnonymousThread(... // : TDummyThraed(AThread).ReturnValue