C# Task.Run和System.Threading.ThreadPool.RunAsync之间有什么区别?

C# Task.Run和System.Threading.ThreadPool.RunAsync之间有什么区别?,c#,.net,multithreading,uwp,C#,.net,Multithreading,Uwp,它们对线程的影响有什么不同? Task.Run似乎仍在当前线程的同一个任务管理器上运行,ThreadPool.RunAsync似乎与当前线程的关联性较小 我注意到,Task.Run很容易自动捕获它之外的参数。例如,如果Task.Run在其外部调用字符串对象,则Task.Run可以自动捕获它。一般来说,Task是对线程的抽象。任务的主要好处是,它们允许您减少对多线程的低级方面的关注,并简化诸如继续之类的事情。它们也很好地集成到C语言中,是现代异步编程的基础。UWP API非常依赖于async/aw

它们对线程的影响有什么不同?
Task.Run
似乎仍在当前线程的同一个任务管理器上运行,
ThreadPool.RunAsync
似乎与当前线程的关联性较小


我注意到,
Task.Run
很容易自动捕获它之外的参数。例如,如果
Task.Run
在其外部调用字符串对象,则
Task.Run
可以自动捕获它。

一般来说,
Task
是对线程的抽象。任务的主要好处是,它们允许您减少对多线程的低级方面的关注,并简化诸如继续之类的事情。它们也很好地集成到C语言中,是现代异步编程的基础。UWP API非常依赖于async/await,因此非常鼓励使用
任务
(尽管UWP API本身对其许多方法使用
IAsyncOperation
,作为类似
任务
的类型,它与Windows运行时兼容,并且可以在WinRT库中公开)

任务的实现使用后台的线程池,因此一般来说,除非您需要低级控制,
任务
应该更容易使用。

这是中的答案。谢谢@aage。通常,在使用托管代码时,您会希望使用Task.Run,因为它以CLR线程池为目标。ThreadPool.RunAsync以本机代码运行,并以Windows线程池为目标


这里有一些信息:@aage,谢谢。