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

在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 仍然是一个有用的选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值