zoukankan      html  css  js  c++  java
  • 异步委托

    无回调函数的异步委托:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Threading;
     7 
     8 namespace 异步委托
     9 {
    10     class Program
    11     {
    12         static void Main(string[] args)
    13         {
    14             Func<int, int, string> delFunc = (a, b) => 
    15             {                
    16                 return (a + b).ToString();
    17             };
    18             //异步调用委托
    19             IAsyncResult result = delFunc.BeginInvoke(3, 4, null, null); //内部原理:使用了一个线程池的线程去执行了委托执向的方法
    20             //获取异步委托的结果
    21             if (result.IsCompleted) //判断异步委托是否执行完成,返回布尔值
    22             {
    23                 string str = delFunc.EndInvoke(result); //EndInvoke方法会阻塞当前的线程,直到异步委托执行完成之后,才能继续往下执行
    24                 Console.WriteLine(str);
    25             }
    26             Console.ReadKey();
    27         }
    28     }
    29 }

     有回调函数的异步委托:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Threading;
     7 using System.Runtime.Remoting.Messaging;
     8 
     9 namespace 异步委托
    10 {
    11     class Program
    12     {
    13         static void Main(string[] args)
    14         {
    15             Func<int, int, string> delFunc = (a, b) => 
    16             {                
    17                 return (a + b).ToString();
    18             };
    19             ////异步调用委托
    20             //IAsyncResult result = delFunc.BeginInvoke(3, 4, null, null); //内部原理:使用了一个线程池的线程去执行了委托执向的方法
    21             ////获取异步委托的结果
    22             //if (result.IsCompleted) //判断异步委托是否执行完成,返回布尔值
    23             //{
    24             //    string str = delFunc.EndInvoke(result); //EndInvoke方法会阻塞当前的线程,直到异步委托执行完成之后,才能继续往下执行
    25             //    Console.WriteLine(str);
    26             //}
    27             delFunc.BeginInvoke(3, 4, MyAsyncCallback, "123");
    28             Console.ReadKey();
    29         }
    30         //回调函数:是异步委托方法执行完成之后,再来调,回调函数
    31         public static void MyAsyncCallback(IAsyncResult ar)
    32         {
    33             //1、拿异步委托执行的结果
    34             AsyncResult result = (AsyncResult)ar;
    35             var del =(Func<int, int, string>)result.AsyncDelegate; //拿到委托的实例:delFunc
    36             string returnValue = del.EndInvoke(result);
    37             Console.WriteLine("返回值:"+returnValue);
    38             //2、拿到给回调函数的参数
    39             Console.WriteLine("传给异步回调函数的参数:"+result.AsyncState); 
    40         }
    41     }
    42 }

    效果

    有回调函数更优方法:

     1 using System;
     2 using System.Collections.Generic;
     3 using System.Linq;
     4 using System.Text;
     5 using System.Threading.Tasks;
     6 using System.Threading;
     7 using System.Runtime.Remoting.Messaging;
     8 
     9 namespace 异步委托
    10 {
    11     class Program
    12     {
    13         static void Main(string[] args)
    14         {
    15             Func<int, int, string> delFunc = (a, b) => 
    16             {                
    17                 return (a + b).ToString();
    18             };
    19             delFunc.BeginInvoke(3, 4, MyAsyncCallback, delFunc);
    20             Console.ReadKey();
    21         }
    22         //回调函数:是异步委托方法执行完成之后,再来调,回调函数
    23         public static void MyAsyncCallback(IAsyncResult ar)
    24         {
    25             var del= (Func<int, int, string>)ar.AsyncState;
    26             string returnValue = del.EndInvoke(ar);
    27             Console.WriteLine("返回值:" + returnValue);
    28             Console.WriteLine("传给异步回调函数的参数:" + ar.AsyncState);
    29         }
    30     }
    31 }
  • 相关阅读:
    HTML5 CSS3简要教程
    WP模拟器修改语言为中文方法
    仿牛华数码频道网整站源码
    backBarButtonItem 颜色/文字修改
    这是html5中WebGL的演示
    CSS3/jQuery创意盒子动画菜单
    bootstrap学习和使用的经验总结
    uploadify插件实现多个图片上传并预览
    绝对炫的幻灯片插件-SKITTER
    制作手机使用的网页图片查看器
  • 原文地址:https://www.cnblogs.com/chenyanbin/p/11042991.html
Copyright © 2011-2022 走看看