亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

awaiting ContinueWith 結果不等待任務完成

awaiting ContinueWith 結果不等待任務完成

C#
jeck貓 2022-06-12 10:53:37
我有以下最少的代碼:class Program{    static async Task T1()    {        await Task.Delay(1000);        Console.WriteLine("T1");    }    static async Task T2()    {        await Task.Delay(500);        Console.WriteLine("T2");    }    static async Task Test()    {        var firstTask = T1();        var secondTask = firstTask.ContinueWith(async (t) => await T2());        await secondTask;    }    static void Main(string[] args)    {        Task.Run(async () => { await Test(); }).GetAwaiter().GetResult();        Console.WriteLine("End");        Console.ReadLine();    }}我期望 Test 方法會等待 T2 完成,但我得到了以下結果T1EndT2為什么 ?
查看完整描述

1 回答

?
慕桂英4014372

TA貢獻1871條經驗 獲得超13個贊

你要找的是Unwrap方法。

如果您查看 的類型secondTask,您會發現它實際上是 a Task<Task>,因此當您等待外部任務時,內部任務不會阻塞。嵌套異步調用時的處理方式如下:

var secondTask = firstTask.ContinueWith(async (t) => await T2()).Unwrap();

secondTask現在是 type Task,你應該看到你期望的行為。


查看完整回答
反對 回復 2022-06-12
  • 1 回答
  • 0 關注
  • 112 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號