一、Demo(同步)
cs
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(异步)
cs
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");
}
}
}