检测何时清除ThreadPool用户工作项

时间:2012-10-03 14:48:39

标签: .net multithreading clr threadpool

我的理解是,使用.NETs threadpool运行的任何东西都是这样的:

ThreadPool.QueueUserWorkItem(myproc);
当应用程序关闭时,

将被CLR彻底终止。

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

1 个答案:

答案 0 :(得分:1)

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

此时,如果您还有其他事情要做,CLR并不特别在意;你的过程已经死了,kaput,即将被埋葬,你无能为力阻止它。如果某些东西足够重要,它必须在进程终止之前必须被清理,它应该进入前台线程,这样进程将保持足够长的时间,以便它可以做任何需要做的事情。