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

C# 非同步程式設計基礎(一·上):委派實作 APM 模式核心元件

     編輯:關於C語言

AsyncDemo 核心實作

public class AsyncDemo {
    private delegate string RunDelegate(); // 內部委派型別
    private string _name;
    private RunDelegate _del;

    public AsyncDemo(string name) {
        _name = name;
        _del = Run; // 繫結同步方法
    }

    // 同步版本
    public string Run() => "My name is " + _name;

    // 非同步 Begin 模式
    public IAsyncResult BeginRun(AsyncCallback callback, object state) {
        try { return _del.BeginInvoke(callback, state); }
        catch (Exception e) { throw; } // 保留堆疊
    }

    // 非同步 End 模式
    public string EndRun(IAsyncResult ar) {
        if (ar == null) throw new ArgumentNullException(nameof(ar));
        try { return _del.EndInvoke(ar); }
        catch (Exception e) { throw; }
    }
}

設計要點

  • 內部委派 RunDelegate 封裝同步方法簽名
  • 建構子繫結 _del = Run,避免重複建立委派實例
  • BeginRun 直接轉發 BeginInvoke,EndRun 轉發 EndInvoke
  • 參數驗證 (ar == null) 與例外重拋 (保留原始堆疊)
  • 此模式可套用至**任何同步方法**,無需修改業務邏輯類別

後續文章將示範四種呼叫模式實戰。

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