它们对线程的影响有什么区别?
Task.Run
似乎仍在当前线程的同一任务管理器上运行,而 ThreadPool.RunAsync
似乎与当前线程的相关性较低。
我注意到 Task.Run
很容易自动捕获它之外的参数。比如如果Task.Run
在它外面调用一个字符串对象,Task.Run
可以自动捕获它。
最佳答案
一般来说,Task
是对线程的抽象。任务的主要好处是它们可以让你更少地关注多线程的低级方面,并简化诸如延续之类的事情。它们也很好地集成到 C# 中,并且是现代异步编程的基础。 UWP API 非常依赖 async/await,因此非常鼓励使用 Tasks
(尽管 UWP API 本身使用 IAsyncOperation
作为其许多方法的 Task
-like 类型,它与 Windows 运行时兼容并且可以在 WinRT 库中公开)。
任务的实现在后台使用线程池,所以一般来说,除非您需要低级控制,否则 Tasks
应该更容易使用。
关于c# - Task.Run 和 System.Threading.ThreadPool.RunAsync 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677373/