我最近对新的.NET TPL库进行了this全面的解释,听起来非常令人印象深刻。读过这篇文章后,新的taskmanager似乎非常聪明,甚至可以判断你的并行任务是否会更快,如果在同一个线程上串行完成,而不是分配给工作线程。这通常是一个困难的决定。
使用先前可用的线程编写了大量代码,现在看起来好像应该用任务编写,这会将大量工作交给任务管理员。
我是否正确地认为,无论我以前用线程做什么,现在应该完成任务?当然总是会出现需要精细控制的情况,但是通常应该将普通的后台工作放在一个任务上,而不是一个新的线程吗?即默认“我需要在后台运行=>新线程”成为“新任务”而不是?
答案 0 :(得分:2)
基本上,是的,您想要使用任务并让它们处理线程使用。实际上,任务由线程池处理。
答案 1 :(得分:1)
任务由TaskScheduler管理。默认的TaskScheduler在ThreadPool线程上运行任务,因此您遇到与使用ThreadPool时通常相同的问题:很难控制池中线程的设置(优先级,区域设置,后台/前台等)。如果您需要控制这些方面中的任何一个,那么自己管理线程可能会更好。您还可以实现自己的调度程序来处理其中的一些问题。
对于大多数其他部分,新的Task类非常有效。