Task.Run 和Task.Factory.StartNew 区别

Posted hanszimmer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Task.Run 和Task.Factory.StartNew 区别相关的知识,希望对你有一定的参考价值。

.Net Framework 4.0开始支持Task.Factory.StartNew,.Net Framework 4.5后开始支持Task.Run。

Task.Factory.StartNew经过简化成了Task.Run,注意的是Factory.StartNew的方法参数种类更丰富,可以完成多样的需求。

在选择上,如果创建的线程需要长时间运行的话那就选择Task.Factory.StartNew。

一:使用

Task.Run(() =>......);
Task.Factory.StartNew(() =>);

二:等待线程拓展

 await:目的是创建的线程完成后其他的线程才能继续执行。

private static async void NewTask() //只能是用在异步的方法中,使用时配合async。
 
  await Task.Run(() => //Task.Factory.StartNew同样适用  
   
     Console.WriteLine("创建的线程:" + Thread.CurrentThread.ManagedThreadId);
  ); 

也可以这么使用:

 var newTask = Task.Run(() =>
 
      Console.WriteLine("进入 线程" + Thread.CurrentThread.ManagedThreadId);
 );
Task.WaitAll(newTask);

以上是关于Task.Run 和Task.Factory.StartNew 区别的主要内容,如果未能解决你的问题,请参考以下文章

Task.Run 和 Task.Factory.StartNew 区别

Task.Run 和Task.Factory.StartNew 区别

关于 Task.Start() 、 Task.Run() 和 Task.Factory.StartNew() 的使用

CS0121'Task.Run之间的调用不明确 (Func键 )'和'Task.Run(Func )”

Task.Factory.StartNew 和 Task.Run

Parallel.ForEach 与 Task.Run 和 Task.WhenAll