Fork me on GitHub

使用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);
        }
    }

  

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

posted @ 2016-12-12 09:47  Something_Diffrent  阅读(170)  评论(0编辑  收藏  举报