多執行緒 5 async await

2021-09-07 12:27:53 字數 1959 閱讀 1737

.net 4.0的task已經讓我們可以非常簡單地使用多執行緒,並且可以有返回值,也可以支援執行緒的取消等操作,可謂已經很強大了。但.net 4.5為我們帶來了async&await,使得實現多執行緒的寫法更簡單,更優美,更符合線性思維。

下面通過乙個例子來演示通過task和async&await分別如何實現,並且最後還附上**執行順序圖。

如下**:

1

#region 使用task實現

2static

void

testbytask()3);

9 console.writeline("

get another thread result,result:

" +task.result);

10 console.writeline("

main thread completed!");

11}1213

static

string

getnamebytask()14

18#endregion

輸出結果:

假如使用async&await如何實現呢,如下**:

1

#region 使用async&await實現

2static

async

void

testbyasyncawait()

3", await

name));

8 console.writeline("

main thread completed!");

9}1011

static

async taskgetnamebyasyncawait()

12);

18}

19#endregion

輸出結果:

輸出結果跟使用task相同。

**執行流程如下圖:

完整**:

1

namespace215

16#region 使用task實現

17static

void

testbytask()

18);

24 console.writeline("

get another thread result,result:

" +task.result);

25 console.writeline("

main thread completed!");

26}2728

static

string

getnamebytask()29

33#endregion

3435

#region 使用async&await實現

36static

async

void

testbyasyncawait()

37", await

name));

42 console.writeline("

main thread completed!");

43}4445

static

async taskgetnamebyasyncawait()

46);

52}

53#endregion54}

55 }

view code

5 建立多執行緒

到目前為止,我們僅用到兩個執行緒 主線程和乙個子執行緒。然而,你的程式可以建立所需的更多執行緒。例如,下面的程式建立了三個子執行緒 create multiple threads.class newthread implements runnable this is the entry point ...

七 多執行緒程式設計5 建立多執行緒

到目前為止,我們僅用到兩個執行緒 主線程和乙個子執行緒。然而,你的程式可以建立所需的更多執行緒。例如,下面的程式建立了三個子執行緒 create multiple threads.class newthread implements runnable this is the entry point ...

pyqt5多執行緒優化 PyQt5多執行緒

您不應該向主檢視傳送乙個新的小部件 qlabel 因為它將是乙個新標籤,而不是原始標籤,您應該傳送str型別的文字class thread qthread changepixmap pyqtsignal qpixmap changelabel pyqtsignal str def run self ...