C# Task

Task是一種基于任務(wù)的編程模型。它與thread的主要區(qū)別是,它更加方便對線程進(jìn)程調(diào)度和獲取線程的執(zhí)行結(jié)果。

Task類和Task類,前者接收的是Action委托類型,后者接收的是Func委托類型。

Task創(chuàng)建:

(1)直接創(chuàng)建

var task1 = new Task(() =>{System.Threading.Thread.Sleep(1000);});

task1.Start();

(2)工廠創(chuàng)建

Task.Factory.StartNew(() = {});

(3)Run運(yùn)行

Task.Run(() =>{});

注:

開啟新任務(wù)的方法:Task.Run()或者Task.Factory.StartNew(),開啟的是后臺線程

要在主線程中等待后臺線程執(zhí)行完畢,可以使用Wait方法(會以同步的方式來執(zhí)行)。不用Wait則會以異步的方式來執(zhí)行。

thread和Task的區(qū)別,thread new多少個就會創(chuàng)建多少個線程,而task是利用線程池中的線程。

Task其他方法:

Task.Wait(); 阻塞當(dāng)前線程

Task.WaitAll(); 阻賽當(dāng)前線程

Task.WaitAny(); 阻塞當(dāng)前線程直到有任意一個任務(wù)執(zhí)行完畢

Task.ContinueWith(task=>{});執(zhí)行完上一個任務(wù)后繼續(xù)執(zhí)行,并將上一個任務(wù)傳遞給下一個代碼塊

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、wait--notify--sleep Object obj = new Object(); obj.wait...
    fe0180bd6eaf閱讀 391評論 0 1
  • ??一個任務(wù)通常就是一個程序,每個運(yùn)行中的程序就是一個進(jìn)程。當(dāng)一個程序運(yùn)行時,內(nèi)部可能包含了多個順序執(zhí)行流,每個順...
    OmaiMoon閱讀 1,803評論 0 12
  • 進(jìn)程和線程 進(jìn)程 所有運(yùn)行中的任務(wù)通常對應(yīng)一個進(jìn)程,當(dāng)一個程序進(jìn)入內(nèi)存運(yùn)行時,即變成一個進(jìn)程.進(jìn)程是處于運(yùn)行過程中...
    小徐andorid閱讀 2,988評論 3 53
  • 《月夜》 文/虞北 月含清輝露明中, 秋寄白蘋夢空凝。 梨花風(fēng)起春已盡, 茉莉雨落秋且吟。 行...
    虞北之海閱讀 995評論 0 2
  • “成為踐行者,先行其言而后從之 。” ——《OKR工作法》 在《原則》一書中,一開篇瑞就提到首先你要知道自己“想要...
    氪星人閱讀 735評論 0 2

友情鏈接更多精彩內(nèi)容