chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內(nèi)不再提示

基于IAsyncResult的APM模型實現(xiàn)異步操作

冬至配餃子 ? 來源:希夏普 ? 作者:jqwang ? 2022-08-19 11:16 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

C#1 的時候就包含了APM,在 APM 模型中,異步操作通過 IAsyncResult 接口實現(xiàn),包括兩個方法 BeginOperationName 和 EndOperationName ,分別表示開始和結(jié)束異步操作。

Demo

我們先來看一個同步示例。新建WPF程序,在界面上放一個按鈕。點擊按鈕訪問外網(wǎng),會有一定時間的阻塞。
pYYBAGL-_qeAPVyfAAD1IE_OjOc100.png

當我們點擊按鈕后,因為web請求是同步的,會阻塞UI線程一定時間。從輸出日志上看阻塞時間是 1 秒鐘左右,此時界面呈卡死狀態(tài)。

poYBAGL-_rmAQnXzAAFr-wN5eyY784.png

日志輸出如下:

poYBAGL-_smAYNE6AAArb7NO7WY149.png

從運行效果和日志,我們可以看出:

?WebRequest方法調(diào)用前后都是在同一個線程上執(zhí)行-UI線程

?WebReqeust方法阻塞了UI線程,導致“假死”現(xiàn)象

WebRequest也提供了異步方法,BeginGetResponse,EndGetResponse。我們修改一下代碼,新增一個按鈕。

poYBAGL-_ymAW9W8AAF1Q51U0Sw475.png

poYBAGL-_y6AOTWZAAA5LQYoYik427.png

poYBAGL-_zOAHVEEAAETOUoVOZI570.pngpYYBAGL-_zqAS42KAAEbyMxfzP8322.png
pYYBAGL-_0yAZdX5AAG4yny4GuM913.png

日志輸出如下:

pYYBAGL-_12AM_2aAAA7KWQJx-M423.png

從運行效果和日志,我們可以看出:

?異步方法不會阻塞調(diào)用方法,調(diào)用后立刻返回

?異步方法會在另外一個線程上執(zhí)行

IAsyncResult

BeginOperationName 方法會返回一個實現(xiàn)了 IAsyncResult 接口的對象。該對象存儲了關(guān)于異步操作的信息。

poYBAGL-_3SAWdDXAACM2tYq1QA599.png

轉(zhuǎn)到定義,我們可以看到接口中都包含哪些內(nèi)容:

pYYBAGL-_4eASnqaAABRku0vIWA696.png

自定義異步方法

實現(xiàn)該接口,定義自己的異步方法。

poYBAGL-_5mAGXFKAADVN429fBk232.png

我們需要新建一個回調(diào)函數(shù):

pYYBAGL-_6qANA47AAClHdlc9o4419.png

在這之后就可以自定義 APM 異步模型了:

poYBAGL-_8aAaAa5AAFNs87dVXU166.png

新增一個按鈕,進行調(diào)用:

pYYBAGL-_92ARluPAAD6rQPJe84712.png

運行效果如下:

pYYBAGL-__CAGHZJAAFxAYyEPY4508.png

日志輸出如下:

poYBAGL_AAOAamJOAAA1XXh4sns725.png

結(jié)合效果和日志,我們可以得出如下結(jié)論:

?自定義的異步方法沒有導致 UI 卡頓

?APM就是把耗時的任務(wù)交給新線程去做,然后利用委托進行回調(diào)

普通方法的異步

如果是普通方法,也可以通過 委托異步(BeginInvoke, EndInvoke):

pYYBAGL_ABmAHW8uAABIrRtICAY507.png

總結(jié)

1.APM 模型是基于IAsyncResult來實現(xiàn)異步操作的

2.異步操作開始時,把委托傳遞給 IAsyncResult

3.在新線程上執(zhí)行耗時操作

4.耗時操作結(jié)束后,修改 IAsyncResult 里的結(jié)果數(shù)據(jù),并調(diào)用 IAsyncResult 里的委托回調(diào)

5.在回調(diào)里獲取 異步操作 的結(jié)果



審核編輯:劉清

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

    關(guān)注

    1

    文章

    72

    瀏覽量

    13661
  • 回調(diào)函數(shù)
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    12053
  • wpf
    wpf
    +關(guān)注

    關(guān)注

    1

    文章

    19

    瀏覽量

    9058
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    異步電機仿真模型

    這里有一個完整的異步電機直接轉(zhuǎn)矩控制的仿真模型,大家可以交流下!
    發(fā)表于 10-09 14:04

    【我是電子發(fā)燒友】低功耗設(shè)計的最佳編程模型異步編程

    異步編程可以編寫出速度快、資源省的高效程序,可以在單線程環(huán)境下實現(xiàn)高并發(fā),可以在沒有操作系統(tǒng)的情況下實現(xiàn)TCP/IP等協(xié)議棧。又快又省可以將功耗控制在最低水平,因此
    發(fā)表于 04-29 20:30

    阿里云 APM 解決方案地圖

    用程序進行接口性能,鏈路追蹤,以及錯誤診斷三個方面監(jiān)控。其中,應(yīng)用監(jiān)控通過探針,亦可捕獲容器和操作系統(tǒng)的性能和狀態(tài),因此也可用于容器和操作系統(tǒng)的性能監(jiān)控。操作系統(tǒng):主要由云監(jiān)控的主機監(jiān)控來實現(xiàn)
    發(fā)表于 07-05 16:54

    三相異步電機靜止狀態(tài)下參數(shù)辨識MATLAB仿真模型

    三相異步電機靜止狀態(tài)下參數(shù)辨識MATLAB仿真模型,實現(xiàn)對定子電阻、轉(zhuǎn)子電阻、互感和漏感的辨識。
    發(fā)表于 08-15 13:16

    為什么說回調(diào)函數(shù)可以實現(xiàn)異步操作

    的函數(shù)。如果你把函數(shù)的指針(地址)作為參數(shù)傳遞給另一個函數(shù),當這個指針被用來調(diào)用其所指向的函數(shù)時,我們就說這是回調(diào)函數(shù)。補充說明:回調(diào)函數(shù)不是由該函數(shù)的實現(xiàn)方直接調(diào)用,而是在特定的事件或條件發(fā)生時由另外的一方調(diào)用的,用于對該事件或條件進行響應(yīng)。問題:1.為什么說回調(diào)函數(shù)可以實現(xiàn)
    發(fā)表于 08-11 08:18

    異步電動機動態(tài)數(shù)學模型

    ...PAGE...目錄 TOC \o "1-3" \h \z \u1 引言 12 異步電動機動態(tài)數(shù)學模型 22.1異步電動機動態(tài)數(shù)學模型的性質(zhì) 22.2三相
    發(fā)表于 09-03 06:54

    基于MATLAB及SIMULINK的異步電動機仿真模型及起動過程的仿真

    基于MA TL ABΠSIMUL IN K的異步電動機仿真模型及起動過程的仿真鄧建國①(湖南大學電氣與信息工程學院,湖南長沙410082)摘 要:利用MA TLAB軟件中的動態(tài)仿真工具SIMUL
    發(fā)表于 09-06 06:11

    Modelica標準庫里的異步電機模型

    Modelica標準庫里的異步電機模型過于復雜,為了便于學習,我用最基本的異步電機方程寫了一個Modelica模型,公式參照陳伯時的《電力拖動自動控制系統(tǒng)--運動控制系統(tǒng)》第3版的19
    發(fā)表于 09-06 07:46

    異步事件驅(qū)動模型在嵌入式系統(tǒng)中的應(yīng)用

    異步事件驅(qū)動并發(fā)模型運用于嵌入式Linux,可使程序占用系統(tǒng)資源少、運行效率高。本文介紹了以libcssl函數(shù)庫中提供的串行接口函數(shù),在嵌入式 Linux的串行通信中實現(xiàn)異步事件驅(qū)
    發(fā)表于 06-09 09:07 ?13次下載

    APM飛行操作

    有關(guān)APM飛控的飛行操作的完整教程,初學者必讀的教材。
    發(fā)表于 02-23 10:52 ?0次下載

    CUDA簡介: CUDA編程模型概述

    在 CUDA 編程模型中,線程是進行計算或內(nèi)存操作的最低抽象級別。 從基于 NVIDIA Ampere GPU 架構(gòu)的設(shè)備開始,CUDA 編程模型通過異步編程
    的頭像 發(fā)表于 04-20 17:16 ?3622次閱讀
    CUDA簡介: CUDA編程<b class='flag-5'>模型</b>概述

    異步、同步電機的模型、矢量控制圖

    異步、同步電機的模型、矢量控制
    發(fā)表于 07-04 14:56 ?3次下載

    介紹一種基于任務(wù)的異步模式TAP

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

    基于DQ0模型的三相異步電機自制仿真模型教程

    【SIMUlink】基于DQ0模型的三相異步電機自制仿真模型 其實,打開simscape自帶的異步電機模型,里面也是基于DQ0的電機的
    發(fā)表于 03-29 11:48 ?1次下載
    基于DQ0<b class='flag-5'>模型</b>的三相<b class='flag-5'>異步</b>電機自制仿真<b class='flag-5'>模型</b>教程

    異步電機控制筆記

    異步電機控制筆記 本筆記討論異步電機的控制算法。先對異步電機在ABC坐標系以及DQ0坐標系下的電壓方程與磁鏈方程進行推導,然后對常用的旋轉(zhuǎn)坐標系下的異步電機
    發(fā)表于 03-29 11:40 ?9次下載
    <b class='flag-5'>異步</b>電機控制筆記