zoukankan      html  css  js  c++  java
  • .net 异步函数 Async await

    .net  异步函数  Async await

      一旦为函数添加async关键字 该函数就是一个异步函数。

      异步方法必须返回 void 或 Task<> 类型。

            public static Task<double> GetValueAsync(double num1, double num2)
            {
                return Task.Run(() =>
                {
                    for (int i = 0; i < 10; i++)
                    {
                        Thread.Sleep(500);
                        num1 = num1 + num2;
                        Console.WriteLine("num:{0}", i);
                    }
                    return num1;
                });
            }
            public static async void DisplayValue()
            {
                double result = await GetValueAsync(1234.5, 1.01);//此处会开新线程处理GetValueAsync任务,然后方法马上返回  
                //这之后的所有代码都会被封装成委托,在GetValueAsync任务完成时调用  
                System.Diagnostics.Debug.WriteLine("Value is : " + result);
            }
      /// <summary>
            ///  Task<string> 表示一个有返回值异步操作
            /// </summary>
            /// <param name="name"></param>
            /// <returns></returns>
            public static async Task<string> IssuerAsync(string name)
            {
                var str = "";
                var task = Task.Run(() =>
                {
                    Thread.Sleep(2000);
                    Console.WriteLine("task name:{0}", name);
                    str = "my name is " + name;
                });
    
                //等待任务执行
                await task;
                return str;
            }

    main() 函数

       Task<string> task = AsyncAwaitTempte.IssuerAsync("liuyl");
    
                Console.WriteLine("count value:");
                for (int i = 0; i < 10; i++)
                {
                    Console.WriteLine("task:{0}", i);
                    Thread.Sleep(500);
                } 
                 Console.WriteLine("task value:{0}", task.Result);
       /// <summary>
            ///  Task<string> 表示一个有返回值异步操作
            /// </summary>
            /// <param name="name"></param>
            /// <returns></returns>
            public static async Task<string> IssuerAsync(string name)
            {
                string str = "";
                var task = new Task(() =>
                {
                    for (int i = 0; i < 4; i++)
                    {
                        Thread.Sleep(1000);
                        Console.WriteLine("task name:{0}", name);
                    }
                    str = "my name is " + name;
                });
                task.Start();
                //task.Wait(); 与   await task ; 不能同时使用
                //等待任务执行
                await task ;
                return str;
            }
  • 相关阅读:
    转 Wireshark和TcpDump抓包分析心得
    ubuntu tomcat的安装与配置
    好久之前就看到的,这次必须转了
    【1】记一次破解wifi
    aircrack加reaver破解带有wps的wifi
    hydra 密码破解工具详解
    树莓派上手常见问题处理[转]
    破解邻居家的wifi密码
    完全教程 Aircrack-ng破解WEP、WPA-PSK加密利器
    Ubuntu中启用关闭Network-manager网络设置问题! 【Server版本】
  • 原文地址:https://www.cnblogs.com/dragon-L/p/5399505.html
Copyright © 2011-2022 走看看