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     }

    输出结果为

    启动线程
    异步调用启动
    异步调用完成
     
     
  • 相关阅读:
    js中cookie的操作
    javascript HTML静态页面传值的四种方法
    更改ligerui源码实现分页样式修改
    javascript Date format(js日期格式化)
    LigerUI用PostGetAjax前后台交互方式的写法
    html中 accept 属性
    jQuery.ajax() 设置 Headers 中的 Accept 内容
    C# 事件(Event)
    C# 委托(Delegate)
    C# 反射(Reflection)
  • 原文地址:https://www.cnblogs.com/sunleinote/p/3084092.html
Copyright © 2011-2022 走看看