假设我有一个线程在应用程序终止时仍在运行
(此线程无法终止,因为它等待 Windows api 调用返回,并且可能很长......)
如果应用程序关闭,线程会发生什么?
它可以引发异常(我在 Delphi 下)吗?
假设我有一个线程在应用程序终止时仍在运行
(此线程无法终止,因为它等待 Windows api 调用返回,并且可能很长......)
如果应用程序关闭,线程会发生什么?
它可以引发异常(我在 Delphi 下)吗?
我会说一个例外是非常合理的。当您调用Application.Terminate
这将导致以下事件序列:
PostQuitMessage
。Application.Terminated
被设置为True
。Application.Run
返回。System.Halt
叫做。DoneApplication
是它将拆除Application
它拥有的所有组件。嗯,最好希望您的线程不会访问Application
.FinalizeUnits
叫做。哦哦。内存管理器已关闭,旁边还有更多。ExitProcess
叫做。现在你的线程被杀死了。您的线程将继续运行,直到调用ExitProcess
. 如果它执行的任何代码都会受到对DoneApplication
and的调用的影响FinalizeUnits
,那么您应该预料到会出现问题。