当前位置: 首页> 教育> 培训 > C#中的Task.Factory.Startnew 和 Task.Run

C#中的Task.Factory.Startnew 和 Task.Run

时间:2025/7/10 1:16:36来源:https://blog.csdn.net/Lingoesforstudy/article/details/140244850 浏览次数:0次

在C#中,Task.Factory.StartNew 和 Task.Run 都是用于在.NET Framework和.NET Core中启动新任务的方法。

Task.Factory.StartNew

Task.Factory.StartNew 方法是 TaskFactory 类的一个实例方法,用于创建一个新的 Task 实例并立即安排它执行。

这个方法提供了更多的配置选项,比如可以指定任务的创建选项(如任务的优先级、是否包含长时间运行的操作等)、任务调度器以及任务继续选项等。

使用场景

  • 当你需要精细控制任务的创建和执行时(比如指定任务的优先级或任务调度器)。
  • 当你需要在任务执行前后执行一些特定的逻辑时(可以使用 TaskCreationOptions 和 TaskContinuationOptions)。
Task task = Task.Factory.StartNew(() =>  
{  // 执行的任务代码  
}, TaskCreationOptions.LongRunning); // 指定这是一个长时间运行的任务

 

Task.Run

Task.Run 是一个更简洁、更推荐的方式来启动新任务。

它是 Task.Factory.StartNew 的一个简化版本,隐藏了大部分复杂的配置选项,使得代码更加简洁易读。

Task.Run 本质上也是调用 Task.Factory.StartNew,但使用了推荐的默认设置,这些设置对于大多数情况来说都是最优的。

使用场景

  • 当你需要简单地启动一个后台任务,而不关心具体的任务创建选项时。
  • 在异步编程中,当你需要将同步的代码块转换为异步执行时。
Task task = Task.Run(() =>  
{  // 执行的任务代码  
});

 

区别

  1. 简洁性Task.Run 比 Task.Factory.StartNew 更简洁,因为它隐藏了大多数不需要的配置选项。
  2. 默认行为Task.Run 使用推荐的默认行为(如使用默认的 TaskScheduler),而 Task.Factory.StartNew 允许你自定义这些行为。
  3. 性能:在大多数情况下,两者在性能上没有显著差异,但 Task.Run 由于其简洁性和默认的最佳实践,通常被认为是更好的选择。
  4. 推荐用法:随着.NET的发展,Task.Run 被广泛推荐用于启动新任务,因为它更简洁且默认行为更适合大多数场景。

        总结来说,Task.Run 是启动新任务的推荐方式,因为它既简洁又提供了合理的默认行为。然而,在某些需要精细控制任务行为的场景下,Task.Factory.StartNew 仍然是一个有用的选项。

关键字:C#中的Task.Factory.Startnew 和 Task.Run

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: