zoukankan      html  css  js  c++  java
  • 使用await和async异步编程

     class Program
        {
            private static readonly Stopwatch Watch = new Stopwatch();
            static void Main(string[] args)
            {
                Watch.Start();

                Compute();
                GetRandom();

                Watch.Stop();
                Console.ReadKey();
            }

            private static async void Compute()
            {
                var a = await GetSum();//任务开始后,直接继续执行下一步
                Console.WriteLine(Watch.ElapsedMilliseconds + "异步方法完成结果:" + a);//直到调用a时候,如果任务未完成就会等待任务完成。
            }

            private static Task<long> GetSum()
            {

                var random = new Random();
                var length = random.Next(10000, 100000);
                long result = 0;
                var task = new Task<long>(() =>
                {
                    for (int i = 0; i < length; i++)
                    {
                        result += i;
                    };
                    return result;
                });

                task.Start();
                return task;

            }

            private static void GetRandom()
            {
                var random = new Random();
                var length = random.Next(10000, 100000);
                Console.WriteLine(Watch.ElapsedMilliseconds + "普通方法完成结果:" + length);
            }
        }

      

           如图,先开始执行异步方法,结果却是用时较少的普通方法先完成。

  • 相关阅读:
    【BZOJ4520】[Cqoi2016]K远点对 kd-tree+堆
    【BZOJ2843】极地旅行社 离线+树链剖分+树状数组
    【BZOJ3251】树上三角形 暴力
    SQL学习笔记三(补充-3)之MySQL完整性约束
    SQL学习笔记三(补充-2)之MySQL数据类型
    SQL学习笔记三(补充-1)之MySQL存储引擎
    SQL学习笔记二之MySQL的数据库操作
    SQL学习笔记一之初识数据库
    深入理解Python中的元类(metaclass)
    Web安全之BurpSuite抓取HTTPS请求
  • 原文地址:https://www.cnblogs.com/hepeng/p/6163298.html
Copyright © 2011-2022 走看看