一、Demo(同步)
using System;
using System.Threading.Tasks;class Program
{static void Main(string[] args){// 使用Task.Run(线程池)来创建两个任务并行执行Task task1 = Task.Run(() => PrintHello());//运行任务线程1Task 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(); // 异步任务1Task task2 = PrintWorld(); // 异步任务2// 等待两个异步任务完成await Task.WhenAll(task1, task2); // 等待所有任务完成}// 假设 PrintHello 和 PrintWorld 是异步方法,返回 Taskstatic 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");}}
}