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