非同步程式設計模型 APM

2022-08-19 06:54:12 字數 1885 閱讀 1294

原文

apm是.net中非同步程式設計模型的縮寫(asynchronous programing model)

通過非同步程式設計, 使得我們的程式可以更加高效的利用系統資源.

1. apm例子

.net中的非同步模型非常完善,只要看到begin***者end***方法。基本都是相對***方法的非同步呼叫方式。

(注:***是方法的名稱)

所以在.net中實現乙個非同步呼叫是很方便的,下面用個小例子來演示乙個非同步操作。

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

system.threading;

6using

system.diagnostics;

7using

system.threading.tasks;

8using

system.net;910

namespace

thread211"

;18for (int i = 0; i < 10; i++)

19 的結果已經返回!

", i);

23res.close();24}

25 console.writeline("

", timespan.fromticks(datetime.now.ticks -start.ticks).totalmilliseconds);

26 console.readkey(true

);27}28

}29 }

非同步完成情況如下

1

using

system;

2using

system.collections.generic;

3using

system.linq;

4using

system.text;

5using

system.threading;

6using

system.diagnostics;

7using

system.threading.tasks;

8using

system.net;910

namespace

thread211"

;19for (int i = 0; i < 10; i++)

2024 console.readkey(true

);25}26

private

static

void

processwebresponse(iasyncresult result)

27 的結果已經返回!\t

", strreq.substring(strreq.length - 1

));33 console.writeline("

", timespan.fromticks(datetime.now.ticks -start.ticks).totalmilliseconds);34}

35}36}

37 }

2.gui 中的apm

非同步程式設計除了在服務端會大量應用,在有gui的客戶端也應用比較多(為了保證客戶端的介面不會假死)。

但是winform或wpf程式中,改變介面元素狀態只有通過ui執行緒,其他執行緒如果試圖改變ui元素,就會丟擲異常(system.invalidoperationexception)。

c 基於委託的非同步程式設計模型(APM)測試用例

很多時候,我們需要程式在執行某個操作完成時,我們能夠知道,以便進行下一步操作。但是在使用原生執行緒或者執行緒池進行非同步程式設計,沒有乙個內建的機制讓你知道操作什麼時候完成,為了克服這些限制,基於委託的非同步程式設計模型應運而生。通過定義 函式能夠實現非同步程式設計,委託是乙個工具,類似語c 的函式...

非同步程式設計模型

使用iasyncresult設計模式的非同步操作是通過名為beginoperationname和endoperationname的兩個方法來實現的,這兩個方法分別開始和結束非同步操作operationname。例如,filestream類提供beginread和endread方法來從檔案非同步讀取位...

網路程式設計之IO模型 非同步IO

linux下的asynchronous io其實用得不多,從核心2.6版本才開始引入。先看一下它的流程 使用者程序發起read操作之後,立刻就可以開始去做其它的事。而另一方面,從kernel的角度,當它受到乙個asynchronous read之後,首先它會立刻返回,所以不會對使用者程序產生任何bl...