详解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#多线程同步执行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解.NET中的异步

    深入理解.NET中的异步

    异步编程是程序设计的重点,在实际的项目,在大量的数据入库以及查询数据并进行计算的时候,程序的UI界面往往卡死在那里,这时候就需要对计算时间限制的过程进行异步处理,同时正确的使用异步编程去处理计算限制的操作和耗时IO操作还能提升的应用程序的吞吐量及性能
    2021-06-06
  • C#影院售票系统毕业设计(4)

    C#影院售票系统毕业设计(4)

    这篇文章主要介绍了C#影院售票系统毕业设计,学习内容是总结销售信息的保存以及加载销售信息,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • C#连接Oracle数据库的多种方法总结

    C#连接Oracle数据库的多种方法总结

    最近小项目当中要使用C#来连接Oracle数据库来完成系统的操作,这篇文章主要给大家介绍了关于C#连接Oracle数据库的多种方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • C#中可枚举类型详解

    C#中可枚举类型详解

    这篇文章主要介绍了C#中可枚举类型,IEnumerable和IEnumerator接口j及其泛型实现和迭代器,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • C#通过创建Windows服务启动程序的方法详解

    C#通过创建Windows服务启动程序的方法详解

    这篇文章主要介绍了C#通过创建Windows服务启动程序的方法,较为详细的分析了C#创建Windows服务应用程序的步骤与相关注意事项,需要的朋友可以参考下
    2016-06-06
  • C#的正则表达式Regex类使用简明教程

    C#的正则表达式Regex类使用简明教程

    这篇文章主要介绍了C#的正则表达式Regex类使用简明教程,分别讲解了如何匹配、如何获取匹配次数、如何获取匹配内容及捕获的方法,需要的朋友可以参考下
    2014-08-08
  • C#数据库操作的用法

    C#数据库操作的用法

    这篇文章主要介绍了C#数据库操作的三种经典用法
    2015-10-10
  • C#多线程Thread使用示例详解

    C#多线程Thread使用示例详解

    这篇文章主要为大家详细介绍了C#多线程Thread使用示例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • C# PaddleOCRSharp OCR进行疲劳测试

    C# PaddleOCRSharp OCR进行疲劳测试

    PaddleOCRSharp 是百度飞桨封装的.NET版本 OCR dll 类库,OCR可以将图像文件中的文本内容进行识别,下面我们就来看看如何通过它们实现疲劳测试吧
    2024-11-11
  • WinForm开发中屏蔽WebBrowser脚本错误提示的方法

    WinForm开发中屏蔽WebBrowser脚本错误提示的方法

    这篇文章主要介绍了WinForm开发中屏蔽WebBrowser脚本错误提示的方法,在C#项目开发中比较实用,需要的朋友可以参考下
    2014-08-08

最新评论