详解C#如何控制多线程同步执行

 更新时间:2023年12月11日 09:12:39   作者:rjcql  
使用Task类来控制多线程的同步执行,可应用于多任务分发执行后,这篇文章主要为大家详细介绍了C#如何通过Task类控制多线程同步执行,感兴趣的小伙伴可以了解下

写在前面

使用Task类来控制多线程的同步执行,可应用于多任务分发执行后,再做归并处理。Tas既拥有线程池的优点,同时也解决了使用ThreadPool不易控制的弊端;可以非常简便并可靠地实现多线程的顺序执行。

代码实现

public class ThreadTester
{
 
    public static void ThreadTest01()
    { 
        var task01 = new Task(() =>
        {
            Thread.Sleep(1000);
            Console.WriteLine("task01 执行完成");
        });
        // 以同步方式执行
        task01.RunSynchronously();
        Console.WriteLine("第一阶段主线程执行完成");
 
        var task02 = new Task(() =>
        {
            Thread.Sleep(1300);
            Console.WriteLine("task02 执行完成");
        });
        task02.Start();
        var task03 = new Task(() =>
        {
            Thread.Sleep(800);
            Console.WriteLine("task03 执行完成");
        });
        task03.Start();
        // 执行等待以保证同步
        task02.Wait();
        task03.Wait();
        Console.WriteLine("第二阶段主线程执行完成");
 
        var task04 = new Task(() =>
        {
            Thread.Sleep(1500);
            Console.WriteLine("task04 执行完成");
        });
        task04.Start();
        var task05 = new Task(() =>
        {
            Thread.Sleep(600);
            Console.WriteLine("task05 执行完成");
        });
        task05.Start();
        // 执行等待以保证同步
        Task.WaitAll(new Task[] { task04, task05 });
        Console.WriteLine("第三阶段主线程执行完成");
 
        var task06 = new Task(() =>
        {
            Thread.Sleep(1200);
            Console.WriteLine("task06 执行完成");
        });
        task06.Start();
        var task07 = new Task(() =>
        {
            Thread.Sleep(100);
            Console.WriteLine("task07 执行完成");
        });
        task07.Start();
        // 全部完成后再执行
        Task.WhenAll(new Task[] { task06, task07 }).ContinueWith((t) =>
        {
            Thread.Sleep(200);
            Console.WriteLine("第四阶段最后完成");
        });
        Console.WriteLine("第四阶段主线程执行完成");
 
        Console.ReadKey();
    }
 
}

执行结果 

到此这篇关于详解C#如何控制多线程同步执行的文章就介绍到这了,更多相关C#多线程同步执行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅谈Java与C#的一些细微差别

    浅谈Java与C#的一些细微差别

    说起C#和Java这两门语言(语法,数据类型 等),个人以为,大概有90%以上的相似,甚至可以认为几乎一样。但是在工作中,我也发现了一些细微的差别
    2013-11-11
  • C# winform自定义控件的实现方法

    C# winform自定义控件的实现方法

    本文主要介绍了C# winform自定义控件的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-12-12
  • c# 将Datatable数据导出到Excel表格中

    c# 将Datatable数据导出到Excel表格中

    本文主要介绍了c# 将Datatable数据导出到Excel表格中的方法。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • C#中ValueTuple的原理详解

    C#中ValueTuple的原理详解

    C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化:ValueTuple,下面这篇文章主要给大家介绍了关于C#中ValueTuple原理的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-06-06
  • 详解C#如何判断字符串的显示宽度

    详解C#如何判断字符串的显示宽度

    这篇文章主要为大家详细介绍了C#判断字符串的显示宽度的相关知识,文中的示例代码讲解详细,具有一定的学习价值,感兴趣的小伙伴可以了解一下
    2023-11-11
  • C#异步编程库AsyncEx的实现

    C#异步编程库AsyncEx的实现

    本文主要介绍了C#异步编程库AsyncEx的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05
  • C#实现简单超市收银系统

    C#实现简单超市收银系统

    这篇文章主要为大家详细介绍了C#实现简单超市收银系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • C#使用HttpClient进行http操作方式

    C#使用HttpClient进行http操作方式

    这篇文章主要介绍了C#使用HttpClient进行http操作方式,具有很好的参考价值,希望对大家有所帮助,
    2023-11-11
  • C#实现简单的点餐系统

    C#实现简单的点餐系统

    这篇文章主要为大家详细介绍了C#实现简单的点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • C#SuperSocket的搭建并配置启动总结

    C#SuperSocket的搭建并配置启动总结

    在本篇文章里我们给大家总结了关于C#SuperSocket的搭建并配置启动的相关内容,正在学习的朋友们跟着参考下。
    2019-05-05

最新评论