zoukankan      html  css  js  c++  java
  • .NET C#-- 利用BeginInvoke与EndInvoke完成异步委托方法并获取方法执行返回值示例

    //定义委托       
     delegate string MyDelegate(string name);
    
    //定义委托调用函数
             public string Hello(string name)
             {
                 Thread.Sleep(10000);            //虚拟异步工作
                 return "Hello " + name;
             }
    
    
    //以下调用并获取返回值
    
            private void Form1_Load(object sender, EventArgs e)
            {
                //建立委托
                 MyDelegate myDelegate = new MyDelegate(Hello);
                 //异步调用委托,获取委托执行函数返回的执行结果
                 IAsyncResult result=myDelegate.BeginInvoke("Leslie", null, null);
    
                //定义一个变量接收委托函数执行的返回结果
                string data="";
                
                //判断如果异步执行是否完
                while (result.IsCompleted==false)
                {
                    Thread.Sleep(20);
                   
                }
                 
                //如果异步函数执行完成则获取返回结果
                data = myDelegate.EndInvoke(result);
            }

     IAsyncResult的相关说明:

    public interface IAsyncResult
    {
    object AsyncState {get;} //获取用户定义的对象,它限定或包含关于异步操作的信息。
    WailHandle AsyncWaitHandle {get;} //获取用于等待异步操作完成的 WaitHandle。
    bool CompletedSynchronously {get;} //获取异步操作是否同步完成的指示。
    bool IsCompleted {get;} //获取异步操作是否已完成的指示。
    }

  • 相关阅读:
    js高级1
    JUC总览
    7 种阻塞队列相关整理
    Exchanger 相关整理
    Semaphore 相关整理
    ConcurrentLinkedQueue 相关整理
    ConcurrentHashMap(1.8) 相关整理
    ConcurrentHashMap(1.7) 相关整理
    ReentrantReadWriteLock 相关整理
    LockSupport 工具相关整理
  • 原文地址:https://www.cnblogs.com/guojingmail2009/p/6259725.html
Copyright © 2011-2022 走看看