【发布时间】:2021-03-15 22:43:19
【问题描述】:
我似乎遇到了工作线程知道关闭应用程序的挑战,但PostQuitMessage() 和Application.Terminate() 似乎都不起作用。应用程序只是没有退出,没有错误。
我是否必须设置一个标志才能从主线程调用其中一个,或者还有其他技巧吗?
线程检查更新的版本并调用更新程序来替换.exe(一旦它不再被锁定)。调用更新程序后,需要退出应用程序。
【问题讨论】:
-
你显然没有尝试
ExitProcess(0)。不过,您确定线程应该是终止应用程序的线程吗?PostQuitMessage不起作用,因为您从错误的线程发布它:“PostQuitMessage 函数将 WM_QUIT 消息发送到线程的消息队列并立即返回”。Application.Terminate不起作用,因为它基于PostQuitMessage。仍然:正确的解决方案可能是重新设计,以便主线程确定何时退出。 -
我已经添加了关于为什么这个线程“需要”退出的信息......:-/
-
(当然这个辅助线程可能会要求主线程退出,然后主线程才能真正退出。)
标签: multithreading delphi