【问题标题】:what is the difference betweent Task.Run and System.Threading.ThreadPool.RunAsync?Task.Run 和 System.Threading.ThreadPool.RunAsync 有什么区别?
【发布时间】:2019-11-03 04:13:02
【问题描述】:

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

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

【问题讨论】:

标签: c# .net multithreading uwp


【解决方案1】:

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

任务的实现在底层使用线程池,所以一般来说,除非你需要低级控制,Tasks 应该更容易使用。

【讨论】:

    【解决方案2】:

    这是https://social.msdn.microsoft.com/Forums/en-US/9c18a978-4a87-40e2-9294-1346bcd2d528/difference-between-task-and-threadpool 中的答案。谢谢@aage。通常,当您使用托管代码时,您会希望使用 Task.Run,​​因为它以 CLR 线程池为目标。 ThreadPool.RunAsync 在本机代码中运行并以 Windows 线程池为目标。

    https://social.msdn.microsoft.com/Forums/en-US/9c18a978-4a87-40e2-9294-1346bcd2d528/difference-between-task-and-threadpool

    【讨论】:

      猜你喜欢
      • 2016-11-20
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-14
      • 1970-01-01
      • 2015-07-08
      • 1970-01-01
      相关资源
      最近更新 更多