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