詳解C#如何控制多線程同步執(zhí)行
寫在前面
使用Task類來(lái)控制多線程的同步執(zhí)行,可應(yīng)用于多任務(wù)分發(fā)執(zhí)行后,再做歸并處理。Tas既擁有線程池的優(yōu)點(diǎn),同時(shí)也解決了使用ThreadPool不易控制的弊端;可以非常簡(jiǎn)便并可靠地實(shí)現(xiàn)多線程的順序執(zhí)行。
代碼實(shí)現(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C# winform自定義控件的實(shí)現(xiàn)方法
本文主要介紹了C# winform自定義控件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-12-12
c# 將Datatable數(shù)據(jù)導(dǎo)出到Excel表格中
本文主要介紹了c# 將Datatable數(shù)據(jù)導(dǎo)出到Excel表格中的方法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03
C#異步編程庫(kù)AsyncEx的實(shí)現(xiàn)
本文主要介紹了C#異步編程庫(kù)AsyncEx的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-05-05
C#實(shí)現(xiàn)簡(jiǎn)單超市收銀系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單超市收銀系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
C#實(shí)現(xiàn)簡(jiǎn)單的點(diǎn)餐系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單的點(diǎn)餐系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
C#SuperSocket的搭建并配置啟動(dòng)總結(jié)
在本篇文章里我們給大家總結(jié)了關(guān)于C#SuperSocket的搭建并配置啟動(dòng)的相關(guān)內(nèi)容,正在學(xué)習(xí)的朋友們跟著參考下。2019-05-05

