• .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;} //获取异步操作是否已完成的指示。
    }

  • 相关阅读:
    app被Rejected 的各种原因翻译
    UIView Border color
    Centos7下安装docker
    利用Yum彻底移除docker
    Docker删除全部镜像和容器
    【转】哈哈笑一笑
    【转】KAFKA分布式消息系统
    java读取properties文件
    java反序列化php序列化的对象
    Java 1.7.0_06中String类内部实现的一些变化【转】
  • 原文地址:https://www.cnblogs.com/guojingmail2009/p/6259725.html
Copyright © 2020-2023  润新知