概要
這裡記錄一下初始學習非同步程式設計。首先理解非同步這個操作:舉個例子來說吧。我們每個人可以做
很多事情(這裡用:事情一,事情二,事情三),我們自己如果需要完成這三件事情的話,那麼
基本上來說是要有順序的一件一件的完成,也就是「一心不能二用」的道理。那麼如果我們想提高
效率,快速的完成這三件事情呢,那我們按照人的慣性思維,找人幫忙做就行了。其實非同步就跟
這個道理差不多。程式**是由執行緒來呼叫執行的,其實乙個執行緒就相當於乙個人的意思。在程
序**中為了解決檔案io的操作和網路請求等相關操作,我們會用對其採用脫離主線程,採用異
步新開啟乙個執行緒去操作檔案io或者web請求,從而實現提高程式的效率,也避免了主線程遲遲
等待檔案io或者web請求完成才能繼續執行下一步**的問題。
觀察下面的**和程式執行結果:
步驟一:新建乙個控制器應用程式(.net framework4.5以上)專案
下面我們看看執行結果
簡單說明:這一步就相當於乙個人需要做幾件事情的情形。乙個人也就是乙個執行緒,這裡能夠看見執行緒id都是1。
步驟二:採用非同步方法實現
**如下:
static
void main(string args)
////// 執行耗時的非同步操
/// 注意:
/// **實現中如果是非同步,那麼此方法名就需要(標記)成非同步方法,即加上:aysnc修飾詞
///private
async
static
void
dosomething()
);//委託方法
console.writeline("耗時操作結束。。。currentthreadid為:" + thread.currentthread.managedthreadid);
}
這裡我們首先看看執行以往的延遲方式:
下面看看執行結果:
分析:
從上面這個結果,執行的過程我們能夠發現,「耗時操作結束。。。currentthreadid為:1」不執行完,「main executed…currentthreadid為:1」始終處於等待中。
再看下面非同步執行的情況:
執行結果
結果分析:
通過執行結果,我們能夠看出,延遲操作交給了通過await標記的**片段執行了,同時開啟了新的執行緒,原來的 當前主線程id為1,非同步開啟的新執行緒id為3。
c 非同步程式設計 Task(一)
thread執行緒是用來建立併發的一種低級別工具,它具有一些限制,尤其是 task類可以很好的解決上述問題,它是乙個高階抽象 它代表了乙個併發操作 concurrent 該操作可能有thread支援,或不由thread支援。開始乙個task最簡單的辦法就是使用task.run net4.5,4.0的...
C 非同步程式設計
同步方法和非同步方法的區別 同步方法呼叫在程式繼續執行之前需要等待同步方法執行完畢返回結果 非同步方法則在被呼叫之後立即返回以便程式在被呼叫方法完成其任務的同時執行其它操作 非同步程式設計概覽 net framework 允許您非同步呼叫任何方法。定義與您需要呼叫的方法具有相同簽名的委託 公共語言執...
C 非同步程式設計
一 基礎知識 1 非同步程式設計 2 非同步方法 乙個程式呼叫某個方法,在處理完成前就返回該方法。同步和非同步主要用於修飾方法。當乙個方法被呼叫時,呼叫者需要等待該方法執行完畢並返回才能繼續執行,我們稱這個方法是同步方法 當乙個方法被呼叫時立即返回,並獲取乙個執行緒執行該方法內部的業務,呼叫者不用等...