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,谢谢。