首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

淺談 .NET 多線程與並行計算(十一):.NET 異步編程模型基礎(下)

     編輯:關於ASP.NET

基於 IAsyncResult 的異步編程模型(APM)

前文介紹了最原始的 Thread + 信號量 + 鎖 + Control.Invoke 組合。.NET 提供基於 IAsyncResult 的異步編程模型(APM),特別適合以下場景:

  1. 阻塞等待單一 IAsyncResult
  2. 阻塞等待多個 IAsyncResult 物件
  3. 輪詢 IAsyncResult 完成狀態

事件式異步模式(EAP)

.NET 另提供基於事件的異步模式(EAP),特點:

  1. 背景執行耗時任務(下載、資料庫操作)不阻塞主應用程式
  2. 同時啟動多項操作,各自完成時觸發事件通知

符合 EAP 模式的類別範例

public class AsyncExample
{
    public int Method1(string param);
    public void Method2(double param);

    public void Method1Async(string param);
    public void Method1Async(string param, object userState);
    public event Method1CompletedEventHandler Method1Completed;

    public void Method2Async(double param);
    public void Method2Async(double param, object userState);
    public event Method2CompletedEventHandler Method2Completed;

    public void CancelAsync(object userState);
    public bool IsBusy { get; }
}

此模式以 MethodXAsync 啟動非同步操作,MethodXCompleted 事件回報結果,CancelAsync 支援取消,IsBusy 指示是否忙碌。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved