0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一個符合EAP模式的示例聲明實現(xiàn)

冬至配餃子 ? 來源:希夏普 ? 作者:jqwang ? 2022-08-19 11:42 ? 次閱讀

EAP(Event-based Asynchronous Pattern) 是基于事件的異步模式,在 .NET Framework 2.0 中引入。EAP 需要一個有 Async 后綴方法和一個或多個事件。EAP不再推薦用于新開發(fā)。

EAP

一個符合 EAP 模式的示例聲明如下:

poYBAGL_BVSACbZ6AADl4NYOGqs759.png

BackgroundWorker

BackgroundWorker 是一個典型的 EAP 實現(xiàn)。

pYYBAGL_BYuAAKIXAAGFoVaPk4E766.pngpoYBAGL_BZGAOigJAAC8f6jct-g226.png

程序運行效果:

pYYBAGL_Ba6AdOPcAAEJwP11zYI879.png

日志輸出:

poYBAGL_Bb6ATB7aAAA68PiRFQE615.png

從效果和日志上看:

?EAP 不會阻塞調用線程

?異步操作真正執(zhí)行是在另外一個線程

?RunWorkerCompleted 回調會回到調用線程(UI線程)

和APM比起來很像,好像只是把 委托綁定 放到了外面。我們可以看一下 BackgroundWorker 的源碼:

1.在構造函數(shù)里實例化一個委托threadStart

poYBAGL_Bd-ARstAAAEAABVxFrE752.png

poYBAGL_BeSAVx2nAABhyEnh-z8800.png

2.調用 RunWorkerAsync() 方法

poYBAGL_BfqAebZhAACo9jMVAvA015.png

看起來 EAP 的本質,還是使用了委托的異步方式(BeginInvoke),實質上還是 APM 異步模式。

多任務

如果有多個異步任務,我們希望按照先后順序執(zhí)行,并且需要在調用線程上得到所有返回值。

poYBAGL_BiCAbZrqAAD8AmfHaUM302.pngpYYBAGL_Bi-AaiwHAAFI9DSCDSs650.png

運行起來,發(fā)現(xiàn)有異常:

poYBAGL_BkSAOZGCAACXEBLdRk8500.png

由此可見在完成第一個異步操作之前沒有對asyncResult2進行賦值,asyncResult2執(zhí)行異步等待的時候報異常。也可以有其他方法來解決這個問題,但會比較復雜。



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • APM
    APM
    +關注

    關注

    1

    文章

    71

    瀏覽量

    13010
  • 線程
    +關注

    關注

    0

    文章

    504

    瀏覽量

    19684
  • .NET技術
    +關注

    關注

    0

    文章

    3

    瀏覽量

    5795
收藏 人收藏

    評論

    相關推薦

    有沒有辦法或示例來編寫函數(shù)來檢查CAN硬件的接收緩沖區(qū)并以更符合RTOS的輪詢方式提取任何新消息?

    需將該函數(shù)聲明為靜態(tài)函數(shù),從而消除了在芯片上不同CAN總線設備之間重用代碼的許多好處。 有沒有辦法或示例來編寫函數(shù)來檢查 CAN 硬件的接收緩沖區(qū)并以更
    發(fā)表于 01-25 06:47

    使用TLSV1.2返回EAP的無效安全性密鑰

    無法連接到2018網(wǎng)絡策略服務器安全WPA2、企業(yè)模式、方法與tlsv1.2 EAP-TLS和EAP-PEAP。發(fā)現(xiàn)問題是MSK的BESL懇求出口。返回到主機取代Besl按照規(guī)格
    發(fā)表于 08-16 02:12

    符合聲明5087A

    符合聲明 -5087A
    發(fā)表于 03-12 11:55

    CE認證中的DOC符合聲明是什么意思?

    符合聲明即Declaration of Conformity,CE認證指令規(guī)定制造商或其在歐洲設立的授權代表有義務制定符合聲明(或“歐盟符合
    發(fā)表于 10-31 08:42

    求使用EAP協(xié)議的Arduino代碼示例

    我正在尋找使用 EAP 協(xié)議的 ESP8266 的可用示例,但我還沒有通過使用 Arduino 框架成功,所有參考文獻都有問題,即它們是需要在尚未最終確定的線程中更改的代碼。有人可
    發(fā)表于 02-27 06:52

    介紹種基于任務的異步模式TAP

    TAP是基于任務的異步模式,在 .NET Framework 4 中引入。TAP是 APM 和 EAP,是推薦的模式模式
    的頭像 發(fā)表于 08-19 11:45 ?2638次閱讀

    MAX4507EAP+ MAX4507EAP+ - (Maxim Integrated) - 專用 IC

    電子發(fā)燒友網(wǎng)為你提供()MAX4507EAP+相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MAX4507EAP+的引腳圖、接線圖、封裝手冊、中文資料、英文資料,MAX4507EAP+真值表,MAX4507EA
    發(fā)表于 11-16 19:55
    MAX4507<b class='flag-5'>EAP</b>+ MAX4507<b class='flag-5'>EAP</b>+ - (Maxim Integrated) - 專用 IC

    MAX4507EAP MAX4507EAP - (Maxim Integrated) - 專用 IC

    電子發(fā)燒友網(wǎng)為你提供()MAX4507EAP相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MAX4507EAP的引腳圖、接線圖、封裝手冊、中文資料、英文資料,MAX4507EAP真值表,MAX4507EAP
    發(fā)表于 11-16 20:12
    MAX4507<b class='flag-5'>EAP</b> MAX4507<b class='flag-5'>EAP</b> - (Maxim Integrated) - 專用 IC

    MAX4507EAP+T MAX4507EAP+T - (Maxim Integrated) - 專用 IC

    電子發(fā)燒友網(wǎng)為你提供()MAX4507EAP+T相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有MAX4507EAP+T的引腳圖、接線圖、封裝手冊、中文資料、英文資料,MAX4507EAP+T真值表,MAX4507
    發(fā)表于 11-16 21:08
    MAX4507<b class='flag-5'>EAP</b>+T MAX4507<b class='flag-5'>EAP</b>+T - (Maxim Integrated) - 專用 IC

    RX23W 的目標板 CE Rev.2.00 符合聲明

    RX23W 的目標板 CE Rev.2.00 符合聲明
    發(fā)表于 02-02 19:07 ?0次下載
    RX23W 的目標板 CE Rev.2.00 <b class='flag-5'>符合</b>性<b class='flag-5'>聲明</b>

    RX23W 模塊目標板 中國 RoHS Rev.1.00 符合聲明

    RX23W 模塊目標板 中國 RoHS Rev.1.00 符合聲明
    發(fā)表于 02-02 19:20 ?0次下載
    RX23W 模塊目標板 中國 RoHS Rev.1.00 <b class='flag-5'>符合</b>性<b class='flag-5'>聲明</b>

    RX23W 模塊的目標板 CE 符合聲明 Rev.1.00

    RX23W 模塊的目標板 CE 符合聲明 Rev.1.00
    發(fā)表于 02-02 19:20 ?0次下載
    RX23W 模塊的目標板 CE <b class='flag-5'>符合</b>性<b class='flag-5'>聲明</b> Rev.1.00

    RX23W 的目標板 CE Rev.2.00 符合聲明

    RX23W 的目標板 CE Rev.2.00 符合聲明
    發(fā)表于 07-04 18:54 ?0次下載
    RX23W 的目標板 CE Rev.2.00 <b class='flag-5'>符合</b>性<b class='flag-5'>聲明</b>

    RX23W 模塊目標板 中國 RoHS Rev.1.00 符合聲明

    RX23W 模塊目標板 中國 RoHS Rev.1.00 符合聲明
    發(fā)表于 07-04 19:06 ?0次下載
    RX23W 模塊目標板 中國 RoHS Rev.1.00 <b class='flag-5'>符合</b>性<b class='flag-5'>聲明</b>

    RX23W 模塊的目標板 CE 符合聲明 Rev.1.00

    RX23W 模塊的目標板 CE 符合聲明 Rev.1.00
    發(fā)表于 07-04 19:06 ?0次下載
    RX23W 模塊的目標板 CE <b class='flag-5'>符合</b>性<b class='flag-5'>聲明</b> Rev.1.00