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







コメント