asysc /wait task 示例执行
task 的执行通task.start()、task.run(),但标识了asysc/wait的执行就是方法调用,而且会安顺序执行完成
public static void Main()
{
TestAsync();
async Task TestAsync()
{
Console.WriteLine($"主线程ID: {Thread.CurrentThread.ManagedThreadId}");
// 1. 遇到await,主线程立即返回(不阻塞)
await Task.Run(() =>
{
Console.WriteLine($"子线程ID: {Thread.CurrentThread.ManagedThreadId}");
Thread.Sleep(3000);
Console.WriteLine("子线程完成");
});
// 2. await后的代码,由线程池的线程执行
Console.WriteLine($"await后线程ID: {Thread.CurrentThread.ManagedThreadId}");
Console.WriteLine("继续执行");
}
}
async Task AsyncMethod()
{
await Task.Run(() =>
{
Console.WriteLine("步骤1");
Thread.Sleep(1000);
});
await Task.Run(() =>
{
Console.WriteLine("步骤2");
Thread.Sleep(1000);
});
await Task.Run(() =>
{
Console.WriteLine("步骤3");
Thread.Sleep(1000);
});
// 按顺序输出:步骤1 -> 步骤2 -> 步骤3
}

浙公网安备 33010602011771号