是否有必要在Application.Exit()上结束ThreadPool?

时间:2015-06-12 14:04:21

标签: c# thread-safety threadpool cancellation

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

线程池:

while (_isFinished)
{
    // Do stuff
}

我知道我需要使用一个标志安全地终止我的BackgroundWorker,考虑到它给了我一个异常,如果我没有它就关闭它。但是,ThreadPool没有。 (Closing不会抛出任何异常)

BackgroundWorker_DoWork:

{{1}}

因此有必要对ThreadPool采取同样的预防措施吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

没有

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

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