zoukankan      html  css  js  c++  java
  • 异步的两种写法: async 与 BeginInvoke

    现在要实现异步只要用关键字async/await就可以轻松实现,在此之前需要用到委托/回调等一堆东西。

    对一下是对比写法:

     1   class Program
     2     {
     3         delegate string SendMessage(string msg);
     4         static void Main(string[] args)
     5         {
     6             SendMessage sm = new SendMessage(DoAction);
     7             sm.BeginInvoke("asyn asyn asyn ... ...", new AsyncCallback(CallBack), null);
     8 
     9             DoAsync("async keywod.. ...");
    10 
    11             Console.WriteLine("do do do .... ...");
    12 
    13             Console.ReadLine();
    14         }
    15          
    16         static void CallBack(IAsyncResult result)
    17         {
    18             SendMessage sm = (SendMessage)((System.Runtime.Remoting.Messaging.AsyncResult)result).AsyncDelegate;           
    19             Console.WriteLine(sm.EndInvoke(result));
    20         }
    21 
    22         static string DoAction(string msg)
    23         {          
    24             Thread.Sleep(3000);            
    25             return msg;
    26         } 
    27 
    28         static  Task<string> DoTask(string msg)
    29         {
    30             return Task.Run(() =>
    31             {
    32                 Thread.Sleep(1000);
    33                 return msg;
    34             });           
    35         }
    36 
    37         static async void DoAsync(string msg)
    38         {
    39             Console.WriteLine(await DoTask(msg));
    40         }

  • 相关阅读:
    数据解压
    子区域数据合并
    数据压缩复制
    将Win10变回Win7/WinXP界面
    通过GP加载卫星云图-雷达图-降雨预报图
    Maven版本与JDK版本
    由输入法随想
    selinux开关
    android studio 配置
    NodeJS 笔记
  • 原文地址:https://www.cnblogs.com/AspDotNetMVC/p/5699462.html
Copyright © 2011-2022 走看看