C#&.NET,.NET Core程序Task.Run执行子线程async/await异步问题?
                
                2.82K 次浏览
            
            以下是基于.NET 7的控制台应用程序代码片段:
Console.WriteLine("主线程开始执行");
var task = Task.Run(MyMethod);
task.ContinueWith(_ =>
{
   Console.WriteLine("子线程完成");
});
Console.WriteLine("主线程继续执行...");
Console.ReadKey();
static async Task GetDataAsync()
{
    await Task.Delay(3000);
    return 56;
}
static async Task MyMethod()
{
    Console.WriteLine("开始执行...");
    var result =await GetDataAsync();
    Console.WriteLine($"异步方法完成,结果为:{result}");
}
 以上代码片段是关于C#&.NET使用Task.Run()执行子线程的async,await异步方法。请问输出的结果依次是什么呢?
1 个回答
- 
                            
                            题目中代码片段的执行结果依次输出如下: 主线程开始执行 主线程继续执行... 开始执行... 异步方法完成,结果为:56 子线程完成解释如下: 首先,在主线程中调用 Task.Run(MyMethod)方法启动一个新的任务,并在该任务中执行MyMethod方法。然后,主线程继续执行,并输出 “主线程继续执行…”。接着,在新的任务中, MyMethod方法开始执行,输出 “开始执行…”。在该方法中,调用了异步方法GetDataAsync,并使用await等待其完成。由于GetDataAsync方法会等待 3 秒钟后返回结果,因此MyMethod方法会在等待期间暂停执行。当 GetDataAsync方法完成后,MyMethod方法会恢复执行,并输出结果 “异步方法完成,结果为:56”。然后,新的任务完成,并输出 “子线程完成”。最后,在主线程中,调用 Console.ReadKey方法等待用户按下任意键后结束程序。
