是否有必要在 Application.Exit() 上结束线程池?

Is it necessary to end a ThreadPool on Application.Exit()?

我有一个单独的 BackgroundWorker 和 ThreadPool 在后台执行方法。 (UI 反馈的 BackgroundWorker)

线程池:

ThreadPool.QueueUserWorkItem(foo, null);

我知道我需要使用一个标志安全地终止我的 BackgroundWorker,因为如果我在没有标志的情况下关闭它,它会给我一个异常。但是,ThreadPool 没有。 (关闭不会抛出任何异常)

BackgroundWorker_DoWork:

while (_isFinished)
{
    // Do stuff
}

那么ThreadPool是否有必要做同样的预防措施?

提前致谢。

没有

ThreadPool threads, according to MSDN,是后台线程,在主执行线程退出后不会让应用程序保持活动状态。当应用程序退出时,它们也会停止执行。

后台线程也会 do not throw exceptions 如果在应用程序关闭期间关闭。