0

据我了解,任何使用 .NET 线程池运行的东西都像这样:

ThreadPool.QueueUserWorkItem(myproc);

当应用程序关闭时,CLR 将彻底终止。

假设在这种情况下 myproc 函数包含一个无限循环。有没有办法可以挂钩线程的终止?

4

1 回答 1

1

不会。当 CLR 拆除您的进程时,它会积极中止任何剩余的后台线程。我之所以说积极中止,是因为与对 的正常调用不同Thread.Abort(),您的代码中不会引发异常,因此您无法响应它。

此时,CLR 并不特别关心您是否还有其他事情要做。你的进程已经死了,kaput,即将被掩埋,你无法阻止它。如果某些事情非常重要,以至于必须在进程终止之前将其清理干净,那么它应该进入前台线程,以便该进程将停留足够长的时间,以便它可以完成它需要做的任何事情。

于 2012-10-03T18:02:41.113 回答