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
コメント