









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
}
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。