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);
posted @ 2019-09-19 10:23  超级驼鹿  阅读(696)  评论(0编辑  收藏  举报
/*