В OTL нет прямой поддержки совместного использования данных владельцем / потоком, потому что весь мой многопоточный опыт говорит мне, что это всегда плохо.(Согласитесь, иногда это единственное решение, но все-таки это плохо.)
Вам следует пойти по второму предложению mghie - создать (необязательно основанный на интерфейсе) объект и передать этот объект (или его интерфейс)в тему.Примерно так:
sharedData := TSharedData.Create;
task := CreateTask(worker).SetParameter('shared', sharedData).Run;
работник:
sharedData := Task.Param['shared'].AsObject as TSharedData;
Другой способ решения этой проблемы - отправка сообщения «Пожалуйста, отправьте обновление» задаче всякий раз, когда пользователь нажимает UpdateNow.кнопка.Затем эта задача отвечает объектом, содержащим текущее состояние.Однако, если задача выполняет длительные непрерывные вычисления, это решение не является действительно подходящим, и подход с общим состоянием работает лучше.