任务并行库启动的线程可以作为前台线程吗?

pep*_*uan 5 .net multithreading task-parallel-library

MSDN文档表明,由TPL启动的线程将享有更好的调度.但是,由于线程基于ThreadPool,因此它们将实现为后台线程.

现在,我希望并行执行一些任务,但必须执行这些任务直到完成.

那么,我如何创建本质上是前台线程的任务,但仍然享受TPL提供的增强调度?

Jon*_*eet 7

你可以编写自己的TaskScheduler实现.看看样本中的实现示例TaskScheduler- 希望它从那里开始相对简单.


Hen*_*man 5

TPL 并不真正为您提供线程,它让您创建任务。任务可以在不同的线程上执行,所以Task != Thread。

与普通线程池一样,更改任何线程属性都不是一个好主意。

但是您的问题可以通过等待主线程中的任何未完成的任务轻松解决。您通常也想捕获并处理它们的异常。