OTLでの所有者/スレッドデータ共有の直接サポートはありません。これは、私のマルチスレッドの経験から、これは常に悪いことであることがわかっているためです。(同意します。それが唯一の解決策である場合もありますが、それでも悪いことです。)
2番目のmghieの提案に従う必要があります-(オプションでインターフェイスベースの)オブジェクトを作成し、このオブジェクト(またはそのインターフェイス)をスレッドに渡します。このようなもの:
sharedData := TSharedData.Create;
task := CreateTask(worker).SetParameter('shared', sharedData).Run;
ワーカー:
sharedData := Task.Param['shared'].AsObject as TSharedData;
この問題を解決する別の方法は、ユーザーがUpdateNowボタンを押すたびに、「更新を送信してください」というメッセージをタスクに送信することです。そのタスクは、現在の状態を含むオブジェクトで応答します。ただし、タスクが長時間の中断できない計算を実行する場合、このソリューションは実際には適切ではなく、共有状態アプローチの方が適切に機能します。