Часть моего приложения Delphi обращается к информации из другой программы. Поскольку выполнение может занять некоторое время, а иногда другая программа может не отвечать, я запускаю эту часть своего кода в отдельном потоке.
Чтобы информировать пользователей о ходе выполнения фонового потока, я запускаю TaskDialog после запуска потока. Я передаю указатель на TaskDialog в свой поток, чтобы поток мог синхронизироваться с TaskDialog и обновлять его по мере выполнения потока. Когда поток завершается, я отправляю сообщение о закрытии в TaskDialog, используя PostMessage(CurrentTaskDialog.Handle, WM_CLOSE, 0, 0);
Пока все работает, но я хочу отменить процесс, если пользователь нажмет кнопку «Отмена» в TaskDialog (это единственная кнопка в TaskDialog). Я не могу понять, как это сделать. Независимо от того, нажимает ли пользователь кнопку или TaskDialog получает сообщение о закрытии, ModalResult
всегда равно mrCancel
. Я попытался назначить другой ModalResult
в потоке, но он все еще оценивается как mrCancel
.
Есть ли способ сделать это?