欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解C#如何控制多線程同步執(zhí)行

 更新時間:2023年12月11日 09:12:39   作者:rjcql  
使用Task類來控制多線程的同步執(zhí)行,可應用于多任務分發(fā)執(zhí)行后,這篇文章主要為大家詳細介紹了C#如何通過Task類控制多線程同步執(zhí)行,感興趣的小伙伴可以了解下

寫在前面

使用Task類來控制多線程的同步執(zhí)行,可應用于多任務分發(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í)行結果 

到此這篇關于詳解C#如何控制多線程同步執(zhí)行的文章就介紹到這了,更多相關C#多線程同步執(zhí)行內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 深入理解.NET中的異步

    深入理解.NET中的異步

    異步編程是程序設計的重點,在實際的項目,在大量的數(shù)據(jù)入庫以及查詢數(shù)據(jù)并進行計算的時候,程序的UI界面往往卡死在那里,這時候就需要對計算時間限制的過程進行異步處理,同時正確的使用異步編程去處理計算限制的操作和耗時IO操作還能提升的應用程序的吞吐量及性能
    2021-06-06
  • C#影院售票系統(tǒng)畢業(yè)設計(4)

    C#影院售票系統(tǒng)畢業(yè)設計(4)

    這篇文章主要介紹了C#影院售票系統(tǒng)畢業(yè)設計,學習內容是總結銷售信息的保存以及加載銷售信息,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-11-11
  • C#連接Oracle數(shù)據(jù)庫的多種方法總結

    C#連接Oracle數(shù)據(jù)庫的多種方法總結

    最近小項目當中要使用C#來連接Oracle數(shù)據(jù)庫來完成系統(tǒng)的操作,這篇文章主要給大家介紹了關于C#連接Oracle數(shù)據(jù)庫的多種方法,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-04-04
  • C#中可枚舉類型詳解

    C#中可枚舉類型詳解

    這篇文章主要介紹了C#中可枚舉類型,IEnumerable和IEnumerator接口j及其泛型實現(xiàn)和迭代器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • C#通過創(chuàng)建Windows服務啟動程序的方法詳解

    C#通過創(chuàng)建Windows服務啟動程序的方法詳解

    這篇文章主要介紹了C#通過創(chuàng)建Windows服務啟動程序的方法,較為詳細的分析了C#創(chuàng)建Windows服務應用程序的步驟與相關注意事項,需要的朋友可以參考下
    2016-06-06
  • C#的正則表達式Regex類使用簡明教程

    C#的正則表達式Regex類使用簡明教程

    這篇文章主要介紹了C#的正則表達式Regex類使用簡明教程,分別講解了如何匹配、如何獲取匹配次數(shù)、如何獲取匹配內容及捕獲的方法,需要的朋友可以參考下
    2014-08-08
  • C#數(shù)據(jù)庫操作的用法

    C#數(shù)據(jù)庫操作的用法

    這篇文章主要介紹了C#數(shù)據(jù)庫操作的三種經典用法
    2015-10-10
  • C#多線程Thread使用示例詳解

    C#多線程Thread使用示例詳解

    這篇文章主要為大家詳細介紹了C#多線程Thread使用示例,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C#?PaddleOCRSharp?OCR進行疲勞測試

    C#?PaddleOCRSharp?OCR進行疲勞測試

    PaddleOCRSharp?是百度飛槳封裝的.NET版本?OCR?dll?類庫,OCR可以將圖像文件中的文本內容進行識別,下面我們就來看看如何通過它們實現(xiàn)疲勞測試吧
    2024-11-11
  • WinForm開發(fā)中屏蔽WebBrowser腳本錯誤提示的方法

    WinForm開發(fā)中屏蔽WebBrowser腳本錯誤提示的方法

    這篇文章主要介紹了WinForm開發(fā)中屏蔽WebBrowser腳本錯誤提示的方法,在C#項目開發(fā)中比較實用,需要的朋友可以參考下
    2014-08-08

最新評論