zoukankan      html  css  js  c++  java
  • 委托(一)

    创建一个委托,并异步调用它,实际上是启动一个线程并在该线程中执行委托方法。*委托使用线程池来完成异步操作。

    委托类Delegate 使用BeginInvoke()方法启动异步调用,并且返回一个IAsyncResult 对象。在启动线程中有以下三种方法等待

    调用结束:

    1. 检查IAsyncResult的IsCompleted属性,当调用没有完成时IsCompleted为false,否则为true。

    2. 使用IAsyncResult的AsyncWaitHandle属性可以返回一个WaitHandle对象,WaitHandle的WaitOne方法可以设置一个

    等待超时时间。

    3.我们可以在异步调用的时候将一个异步回调委托传递给他,当委托的异步调用结束时会自动调用这个异步回调委托的方法。

    AsyncCallback 委托定义了异步调用结束时掉用到方法。例如:

     1 public static Action<String> de;
     2     public static void RunSnippet()
     3     {
     4         de = new Action<String>(MyClass.funcation);
     5         de.BeginInvoke("异步调用启动",new AsyncCallback(Callback),"异步调用完成");
     6         Console.WriteLine("启动线程");
     7     }
     8     
     9     public static void funcation(String msg)
    10     {
    11         Console.WriteLine(msg);    
    12         Thread.Sleep(2000);
    13     }
    14     
    15     public static void Callback(IAsyncResult ar)
    16     {
    17         Console.WriteLine(ar.AsyncState);
    18         de.EndInvoke(ar);
    19     }

    输出结果为

    启动线程
    异步调用启动
    异步调用完成
     
     
  • 相关阅读:
    Spring Controller参数为空串的处理方式
    netstat用法
    zookeeper的配置项
    C++ Lambda表达式用法
    java命令行运行jar里的main类
    Random的nextInt用法
    【JAVA】删除某个目录及目录下的所有子目录和文件
    Centos7设置keepAlived开机自启动
    linux设置nginx开机自启动
    window.open()方法
  • 原文地址:https://www.cnblogs.com/sunleinote/p/3084092.html
Copyright © 2011-2022 走看看