码迷,mamicode.com
首页 > 其他好文 > 详细

Async await 异步编程说明

时间:2017-11-29 12:50:19      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:stat   console   class   初步了解   eth   col   lin   async   res   

  希望在编程上有些许提高所以 最近连续2篇博客都在说明多线程和异步编程的使用,异步和多线程之间区别请自行百度,因为理解不是特别透彻就不在叙述以免误导大家,这里写下新研究整理 task  和 await 的异步编程使用

调用子方法和耗时方法如下

        /// <summary>
        /// 有返回值异步方法
        /// </summary>
        /// <returns></returns>
        static async Task<int>  HaveReturnAsync()
        {
             await Task.Run(() => Method1("HaveReturnAsync"));  // part_001

            //Task t1 = new Task(() => sss());
            //t1.Start();
            Console.WriteLine("ccc"); //part_003
            return 10;
        }


        /// <summary>
        /// 耗时输出方法
        /// </summary>
        /// <param name="name"></param>
        static void Method1(string name)
        {
            string temp1 = ""+name+"_1";
            string temp2 = "" + name + "_2";
            Console.WriteLine(temp1);
            Thread.Sleep(500);
            Console.WriteLine(temp2);
        }

  调用主方法

            //无返回值
            //Async2();
            //Console.WriteLine("Async2-Bakc");    

            // 有返回值
            var ll = HaveReturnAsync();            
            Console.WriteLine("aaa"); //part_002
            Console.WriteLine("llValue:" + ll.Result); // part_003
            Console.ReadKey();

执行结果

技术分享图片

 从执行结果可以看出在执行HaveReturnAsync:async Task<int> HaveReturnAsync()   主线程不会等待会直接输出//part_002 ,但在HaveReturnAsync() 方法体内 会等待 Method1 方法执行完

再输出 Console.WriteLine("ccc"); //part_003,看到这里大家会对 await 有一定了解了吧,从整体来看 主线程 调用HaveReturnAsync 是异步,在HaveReturnAsync() 方法体内 调用 Method1 用await 使其会等待Method1 执行完后

,再执行下面代码是同步。希望上面描述对大家对异步编程有初步了解,如有疑问可以一起讨论。

 

Async await 异步编程说明

标签:stat   console   class   初步了解   eth   col   lin   async   res   

原文地址:http://www.cnblogs.com/liyanbofly/p/7919677.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!