淺談.Net的非同步

來源:互聯網
上載者:User
在學習非同步前有必要討論“我們為什麼要瞭解非同步”,也就是非同步對我們編寫程式有什麼好處。現說說同步把,所謂同步就是按照程式編碼的順序執行,非同步說的粗糙點就是不按照編碼的順序執行,我們什麼時候需要進行非同步編程呢--------如果我們遇到某個任務特別費時,由於下面執行的任務和上個任務無關,我們可以用非同步執行(當然也可以用多線程);知道什麼時候使用非同步,那我們接下來開始學習非同步編程吧。
       一,非同步編程的步驟
1,建立與被呼叫者法相同簽名的委託

假設被調用的方法為public void TestMethod(string p)

Public delegate void  AsyncDelegate(string p);

2,把被調用的方法註冊到委託執行個體

AsyncDelegate ad=new AsyncDelegate(TestMethod);

3,以begininvoke開始調用非同步方法呼叫

IAsyncResult ar =Ad.BeginInvoke(string p,null,null)

4,繼續做一些不需要非同步呼叫結果的操作

//做一些其它操作

5,在需要非同步呼叫方法結果的時候,察看非同步呼叫方法執行的結果,並同步等待非同步呼叫完成。

 while(ar.IsCompleted == false)

 {

            Thread.Sleep(10);

 }

Ad.EndBeginInvoke();

//繼續操作
二,執行個體(附在後面)

三,在非同步呼叫中使用IAsyncResult(表示非同步作業的狀態)和AsyncCallback(非同步呼叫完成時執行回調方法)
  1,建立與被呼叫者法相同簽名的委託

假設被調用的方法為public void TestMethod(string p)

Public delegate void  AsyncDelegate(string p);

2,把被調用的方法註冊到委託執行個體

AsyncDelegate ad=new AsyncDelegate(TestMethod);

3,定義非同步呼叫完成時執行的回調方法

Public void CallbackMethod(IAsyncResult ar)

4,以begininvoke開始調用非同步方法呼叫

IAsyncResult ar =Ad.BeginInvoke(string p,new AsyncCallback(CallbackMethod),null)

5,繼續做一些不需要非同步呼叫結果的操作

//做一些其它操作
四,執行個體(附在後面)
五,總結“非同步方法呼叫簽名”
方法簽名是參數類型在一個方法中的順序。BeginInvoke 非同步方法呼叫簽名的規則是:

  • 包括所有 IN 參數。
  • 包括所有 OUT 參數。
  • 包括所有 IN/OUT 參數。
  • 包括所有 ByRef 參數。
  • AsyncCallbackAsyncState(可通過 IAsyncResult 介面的 AsyncState 屬性獲得)作為最後兩個參數。
  • 返回 IAsyncResult

EndInvoke 非同步方法呼叫簽名的規則是:

  • 包括所有 IN/OUT 參數。
  • 包括所有 OUT 參數。
  • 包括所有 ByRef 參數。
  • IAsyncResult 作為最後一個參數。
  • 從原始方法簽名返回原始傳回型別。

結果對象 (IAsyncResult) 是從開始操作返回的,並且可用於擷取有關非同步開始操作是否已完成的狀態。結果對象被傳遞到結束操作,該操作返回調用的最終傳回值。在開始操作中可以提供可選的回調。如果提供回調,在調用結束後,將調用該回調;並且回調中的代碼可以調用結束操作。

原始碼:/Files/chinhr/code.rar


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.