一、Demo(同步)
using System;using System.Threading.Tasks; class Program{ static void Main(string[] args) { // 使用Task.Run(线程池)来创建两个任务并行执行 Task task1 = Task.Run(() => PrintHello());//运行任务线程1 Task task2 = Task.Run(() => PrintWorld());//运行任务线程2 // 确保完成所有任务线程,再执行后面的代码 Task.WhenAll(task1, task2).Wait(); } // 任务一:每1秒输出 "Hello" static void PrintHello() { while (true) { Console.WriteLine("Hello"); Task.Delay(1000).Wait(); // 休眠五秒 } } // 任务二:每3秒输出 "World" static void PrintWorld() { while (true) { Console.WriteLine("World"); Task.Delay(3000).Wait(); // 休眠六秒 } }}
二、Demo(异步)
using System;using System.Threading.Tasks; class Program{ static async Task Main(string[] args) { // 直接调用异步任务,不需要使用 Task.Run() Task task1 = PrintHello(); // 异步任务1 Task task2 = PrintWorld(); // 异步任务2 // 等待两个异步任务完成 await Task.WhenAll(task1, task2); // 等待所有任务完成 } // 假设 PrintHello 和 PrintWorld 是异步方法,返回 Task static async Task PrintHello() { // 模拟异步操作(比如网络请求、IO操作等) while (true) { await Task.Delay(1000); // 假设这是一个异步操作 Console.WriteLine("Hello"); } } static async Task PrintWorld() { while (true) { // 模拟异步操作 await Task.Delay(3000); // 假设这是一个异步操作 Console.WriteLine("World"); } }}