C#非同步呼叫

來源:互聯網
上載者:User

標籤:style   color   使用   資料   art   io   

在有時候,我們要從一些外裝置或是網路索取大量資料時,外裝置可能須要處理非常久才幹把傳輸資料回電腦,這時我們僅僅有傻傻的等待。

但我們採用非同步方法呼叫就不同了,我們能夠利用這點時間去做別的事,等待完畢後,再通知我們接收。

 

1.怎樣進行非同步呼叫

(1)定義要運行非同步方法。

(2)定義一個與運行非同步方法呼叫同樣簽名的託付。

(3)執行個體化該託付,該託付應該指向該非同步方法呼叫。

(4)利用BeginInvoke啟動非同步方法呼叫。

(5)利用EndInvoke得到結果。

(6)設定回調方法。(非必需)

 

2.BeginInvoke和EndInvoke方法的使用:

我們都知道當程式定義一個託付時,公用語言執行庫將自己主動為該託付定義具有簽名的BegInvoke和EndInvoke 方法

(1)BeginInvoke

    BeginInvoke 方法用於啟動非同步呼叫。它與你須要非同步啟動並執行方法具有同樣的參數,另外還有兩個額外的參數。

    BeginInvoke 表示馬上返回,不等待非同步呼叫的完畢。

    BeginInvoke 返回一個IAsyncResult,可用於監視非同步進度。

(2)EndInvoke

    EndInvoke 方法用於檢索非同步呼叫結果。調用BeginInvoke後可隨時調用EndInvoke方法;假設非同步呼叫未完畢,EndInvoke 將一直堵塞。

非同步呼叫完畢。EndInvoke的參數包含您須要非同步啟動並執行方法的out和ref參數(在 Visual Basic 中為 <Out> ByRef 和 ByRef)以及由BeginInvoke 返回的IAsyncResult。

3.示範範例:

namespace ConsoleApplication
{
    //定義代理
    delegate String Mydelegate();
    class temp
    {
        static void Main(String[] args)
        {
            //執行個體化代理
            Mydelegate Md = new Mydelegate(AsyncMethod);
            //執行個體一個回調代理
            AsyncCallback callback = new AsyncCallback(callbackMethod);
            //開始運行非同步方法呼叫
            Md.BeginInvoke(callback, Md);
            Console.ReadLine();
        }
        //非同步呼叫的方法
        static String AsyncMethod()
        {
            Console.WriteLine("非同步方法呼叫正運行");
            String str = "非同步呼叫已結束";
            return str;
        }

        //回調方法
        static void callbackMethod(IAsyncResult Ias)
        {
            Mydelegate Md = (Mydelegate)Ias.AsyncState;
            String  str = Md.EndInvoke(Ias);
            Console.WriteLine(str);
        }
    }
}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.