0
点赞
收藏
分享

微信扫一扫

1、Task的优势

1、Task的优势

  ThreadPool相比Thread来说具备了很多优势,但是ThreadPool却又存在一些使用上的不方便。比如:
  ◆ ThreadPool不支持线程的取消、完成、失败通知等交互性操作;
  ◆ ThreadPool不支持线程执行的先后次序;
  以往,如果开发者要实现上述功能,需要完成很多额外的工作,现在,FCL中提供了一个功能更强大的概念:Task。Task在线程池的基础上进行了优化,并提供了更多的API。在FCL4.0中,如果我们要编写多线程程序,Task显然已经优于传统的方式。
  以下是一个简单的任务示例:

    async/await的实现:

 

using System;
using System.Threading.Tasks;namespace ConsoleApp1
{
      class Program
      {
            public static void Main()
            {
                  var ret1 = AsyncGetsum();
                  Console.WriteLine("主线程执行其他处理");
                  for (int i = 1; i <= 3; i++)
                        Console.WriteLine("Call Main()");
                  int result = ret1.Result;                  //阻塞主线程
                  Console.WriteLine("任务执行结果:{0}", result);
             }             async static Task<int> AsyncGetsum()
             {
                  await Task.Delay(1);
                  int sum = 0;
                  Console.WriteLine("使用Task执行异步操作.");
                  for (int i = 0; i < 100; i++)
                  {
                        sum += i;
                  }
                  return sum;
             }
      }
}


举报

相关推荐

0 条评论