假设我有一个在应用程序终止时仍在运行的线程
(此线程无法终止,因为它等待Windows api调用返回 这可能很长......)
如果应用程序关闭,线程会发生什么?
可以引发异常吗(我在Delphi下)?
答案 0 :(得分:7)
我会说异常是非常合理的。当您致电Application.Terminate
时,这将导致以下事件序列:
PostQuitMessage
。Application.Terminated
设置为True
。Application.Run
返回。System.Halt
被召唤。DoneApplication
,它将拆除Application
及其拥有的所有组件。嗯,更好的希望你的线程不能访问Application
拥有的任何东西。FinalizeUnits
被调用。嗯,哦。内存管理器已关闭,旁边还有很多。ExitProcess
被调用。现在你的线程被杀了。在调用ExitProcess
之前,您的主题将继续运行。如果它执行任何会受到DoneApplication
和FinalizeUnits
调用影响的代码,那么您应该会遇到问题。