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

並發事件:透過 C# 簡化 APM (3) — 匿名方法與 Lambda 表達式簡化 APM 程式碼

     編輯:關於C語言

多方法 APM 模式的複雜性

ApmPatternWithMultipleMethods 需額外定義 ApmData 封裝共享資料、無法使用 using(資源跨方法開關)、需手動 Close()。

匿名方法 (C# 2.0) 內嵌回調

ApmPatternWithAnonymousMethod 將回調內嵌,程式碼集中、無需 ApmData。編譯器自動產生封裝類別,將外部方法參數/區域變數提升為欄位,實現跨方法/執行緒共享資料。仍無法用 using(形式上仍有兩個方法)。

Lambda 表達式 (C# 3.0) 更簡潔

ApmPatternWithLambdaExpression:result => { ... } 取代 delegate(IAsyncResult result) { ... },編譯器自動推斷參數型別,語法更簡潔。

執行結果驗證


Primary ThreadId=1
ThreadId=1: 4D-5A-90-00-03 (SynchronousPattern)
ThreadId=3: 4D-5A-90-00-03 (ApmPatternWithMultipleMethods)
ThreadId=3: 4D-5A-90-00-03 (ApmPatternWithAnonymousMethod)
ThreadId=3: 4D-5A-90-00-03 (ApmPatternWithLambdaExpression)
ThreadId=3: 4D-5A-90-00-03 (ApmPatternWithIterator)

同步模式在主執行緒;所有非同步模式皆在執行緒池執行緒 (ThreadId=3) 完成,驗證非同步不阻塞主執行緒。

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