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

标签 c# .net multithreading uwp

它们对线程的影响有什么区别? 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/

相关文章:

c# - Service-Fabric 绑定(bind)到多个端点

c# - 如何在 mvc2 中的 html.label 帮助程序中设置 ID 和文本

java - 如何安全、及时地处置Java中稀缺的共享资源?

asp.net - "HttpContext.Current"属性的跨线程使用及相关东西

c++ - Openmp thread affinity : Set 2 threads in the program, 有多少核正在运行?

c# - 如何使用 CodeDOM 表达空合并运算符?

c# - 将日期导出到 Csv 并告诉 excel 格式

c# - WP工具包 : TiltEffect Doesn't Seem to be Affecting Image

c# - 为什么我的 REST 服务 .NET 客户端会发送每个没有身份验证 header 的请求,然后使用身份验证 header 重试?

c# - 让 XamlReader.Load 忽略未知的 xml 而不是崩溃?