詳解C#如何控制多線程同步執(zhí)行
寫在前面
使用Task類來控制多線程的同步執(zhí)行,可應(yīng)用于多任務(wù)分發(fā)執(zhí)行后,再做歸并處理。Tas既擁有線程池的優(yōu)點,同時也解決了使用ThreadPool不易控制的弊端;可以非常簡便并可靠地實現(xiàn)多線程的順序執(zhí)行。
代碼實現(xiàn)
public class ThreadTester { public static void ThreadTest01() { var task01 = new Task(() => { Thread.Sleep(1000); Console.WriteLine("task01 執(zhí)行完成"); }); // 以同步方式執(zhí)行 task01.RunSynchronously(); Console.WriteLine("第一階段主線程執(zhí)行完成"); var task02 = new Task(() => { Thread.Sleep(1300); Console.WriteLine("task02 執(zhí)行完成"); }); task02.Start(); var task03 = new Task(() => { Thread.Sleep(800); Console.WriteLine("task03 執(zhí)行完成"); }); task03.Start(); // 執(zhí)行等待以保證同步 task02.Wait(); task03.Wait(); Console.WriteLine("第二階段主線程執(zhí)行完成"); var task04 = new Task(() => { Thread.Sleep(1500); Console.WriteLine("task04 執(zhí)行完成"); }); task04.Start(); var task05 = new Task(() => { Thread.Sleep(600); Console.WriteLine("task05 執(zhí)行完成"); }); task05.Start(); // 執(zhí)行等待以保證同步 Task.WaitAll(new Task[] { task04, task05 }); Console.WriteLine("第三階段主線程執(zhí)行完成"); var task06 = new Task(() => { Thread.Sleep(1200); Console.WriteLine("task06 執(zhí)行完成"); }); task06.Start(); var task07 = new Task(() => { Thread.Sleep(100); Console.WriteLine("task07 執(zhí)行完成"); }); task07.Start(); // 全部完成后再執(zhí)行 Task.WhenAll(new Task[] { task06, task07 }).ContinueWith((t) => { Thread.Sleep(200); Console.WriteLine("第四階段最后完成"); }); Console.WriteLine("第四階段主線程執(zhí)行完成"); Console.ReadKey(); } }
執(zhí)行結(jié)果
到此這篇關(guān)于詳解C#如何控制多線程同步執(zhí)行的文章就介紹到這了,更多相關(guān)C#多線程同步執(zhí)行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#影院售票系統(tǒng)畢業(yè)設(shè)計(4)
這篇文章主要介紹了C#影院售票系統(tǒng)畢業(yè)設(shè)計,學習內(nèi)容是總結(jié)銷售信息的保存以及加載銷售信息,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2015-11-11C#連接Oracle數(shù)據(jù)庫的多種方法總結(jié)
最近小項目當中要使用C#來連接Oracle數(shù)據(jù)庫來完成系統(tǒng)的操作,這篇文章主要給大家介紹了關(guān)于C#連接Oracle數(shù)據(jù)庫的多種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下2023-04-04C#通過創(chuàng)建Windows服務(wù)啟動程序的方法詳解
這篇文章主要介紹了C#通過創(chuàng)建Windows服務(wù)啟動程序的方法,較為詳細的分析了C#創(chuàng)建Windows服務(wù)應(yīng)用程序的步驟與相關(guān)注意事項,需要的朋友可以參考下2016-06-06WinForm開發(fā)中屏蔽WebBrowser腳本錯誤提示的方法
這篇文章主要介紹了WinForm開發(fā)中屏蔽WebBrowser腳本錯誤提示的方法,在C#項目開發(fā)中比較實用,需要的朋友可以參考下2014-08-08