Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否需要在Application.Exit()上结束线程池?_C#_Thread Safety_Threadpool_Cancellation - Fatal编程技术网

C# 是否需要在Application.Exit()上结束线程池?

C# 是否需要在Application.Exit()上结束线程池?,c#,thread-safety,threadpool,cancellation,C#,Thread Safety,Threadpool,Cancellation,我有一个单独的BackgroundWorker和ThreadPool,在后台处理方法。(用户界面反馈的后台工作人员) 线程池: ThreadPool.QueueUserWorkItem(foo, null); 我知道我需要使用一个标志安全地终止我的BackgroundWorker,因为如果我在没有标志的情况下关闭它,它会给我一个例外。但是,线程池没有。(关闭不会引发任何异常) 后台工作人员工作: while (_isFinished) { // Do stuff } 那么,有必要对线

我有一个单独的BackgroundWorker和ThreadPool,在后台处理方法。(用户界面反馈的后台工作人员)

线程池:

ThreadPool.QueueUserWorkItem(foo, null);
我知道我需要使用一个标志安全地终止我的BackgroundWorker,因为如果我在没有标志的情况下关闭它,它会给我一个例外。但是,线程池没有。(关闭不会引发任何异常)

后台工作人员工作:

while (_isFinished)
{
    // Do stuff
}
那么,有必要对线程池执行相同的预防措施吗

提前谢谢。

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

后台线程也可以在应用程序关闭期间关闭

没有

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

后台线程也可以在应用程序关闭期间关闭

没有

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

后台线程也可以在应用程序关闭期间关闭

没有

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


后台线程也可以在应用程序关闭期间关闭

我不明白你的代码示例。。。如果您有一个做大量工作的循环,为什么要首先使用线程池?线程池是产生大量线程所涉及的开销的解决方案。至于最后一点——我总是亲自处理与应用程序和所有线程的生命周期有关的所有事情。仅当所有(辅助)线程都已联接时,应用程序才能结束。这是一个基本的设计实践,可以为你节省很多痛苦。我不明白你的代码示例。。。如果您有一个做大量工作的循环,为什么要首先使用线程池?线程池是产生大量线程所涉及的开销的解决方案。至于最后一点——我总是亲自处理与应用程序和所有线程的生命周期有关的所有事情。仅当所有(辅助)线程都已联接时,应用程序才能结束。这是一个基本的设计实践,可以为你节省很多痛苦。我不明白你的代码示例。。。如果您有一个做大量工作的循环,为什么要首先使用线程池?线程池是产生大量线程所涉及的开销的解决方案。至于最后一点——我总是亲自处理与应用程序和所有线程的生命周期有关的所有事情。仅当所有(辅助)线程都已联接时,应用程序才能结束。这是一个基本的设计实践,可以为你节省很多痛苦。我不明白你的代码示例。。。如果您有一个做大量工作的循环,为什么要首先使用线程池?线程池是产生大量线程所涉及的开销的解决方案。至于最后一点——我总是亲自处理与应用程序和所有线程的生命周期有关的所有事情。仅当所有(辅助)线程都已联接时,应用程序才能结束。这是一个基本的设计实践,可以帮你省去很多痛苦。