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     }

    输出结果为

    启动线程
    异步调用启动
    异步调用完成
     
     
  • 相关阅读:
    POJ 2528 Mayor's posters 线段树+离散化
    Leveldb之version与version_set详细对比
    rocksdb编译测试的正确姿势
    ycsb使用方法
    memalign vs malloc
    四种监听器(自身类,外部类,内部类,匿名类)
    数据库基础
    哈希索引和Btree索引
    哈希表hashtable
    抽象类和接口
  • 原文地址:https://www.cnblogs.com/sunleinote/p/3084092.html
Copyright © 2011-2022 走看看