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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM