gpt4 book ai didi

windows - 在 Delphi 下终止应用程序时线程未终止

转载 作者:可可西里 更新时间:2023-11-01 09:45:37 24 4
gpt4 key购买 nike

假设我有一个线程在应用程序终止时仍在运行

(此线程无法终止,因为它等待 Windows api 调用返回这可能会很长......)

如果应用程序关闭,线程会发生什么情况?

它能引发异常吗(我在 Delphi 下)?

最佳答案

我会说异常(exception)是非常合理的。当您调用 Application.Terminate 时,这将导致以下事件序列:

  1. 调用 PostQuitMessage
  2. Application.Terminated 被设置为 True
  3. Application.Run 返回。
  4. System.Halt 被调用。
  5. 运行退出过程,特别是 DoneApplication,它将拆除 Application 及其拥有的所有组件。嗯,最好希望您的线程不会访问 Application 拥有的任何内容。
  6. FinalizeUnits 被调用。呃哦。内存管理器已关闭,还有很多。
  7. ExitProcess叫做。现在你的线程被杀死了。

您的线程将继续运行,直到调用 ExitProcess。如果它执行的任何代码会受到调用 DoneApplicationFinalizeUnits 的影响,那么您应该会遇到问题。

关于windows - 在 Delphi 下终止应用程序时线程未终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16142522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com