.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相同。
**執行流程如下圖:
完整**:
1view codenamespace215
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 }
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 ...