我的 Delphi 应用程序的一部分从另一个程序访问信息。因为执行可能需要一些时间,而且有时其他程序可能没有响应,所以我在单独的线程中运行我的那部分代码。
为了让我的用户了解后台线程的进度,我在启动线程后执行了一个 TaskDialog。我将一个指向 TaskDialog 的指针传递给我的线程,以便线程可以与 TaskDialog 同步以在线程进行时更新它。线程完成后,我使用以下方法向 TaskDialog 发送关闭消息PostMessage(CurrentTaskDialog.Handle, WM_CLOSE, 0, 0);
到目前为止一切正常,但是如果用户单击 TaskDialog 上的 Cancel 按钮(它是 TaskDialog 上的唯一按钮),我想取消该过程。我不知道该怎么做。无论用户是否单击按钮,或者 TaskDialog 是否收到关闭消息,ModalResult
都始终是mrCancel
. 我尝试ModalResult
在线程中分配一个不同的值,但它仍然评估为mrCancel
.
有没有办法做到这一点?