-1
我想了解這兩種情況之間的代碼行爲差異:異步超時 - 錯誤處理邏輯
- 如果(T = 等待 Task.WhenAny(T,Task.Delay( 500)))
- 如果(T!= Task.WhenAny(T,Task.Delay(150))。結果)
據我所知,第二個將是因爲我們等待較慢一個或另一個立即。
的整體功能:
public async Task<string> TestAsyncTimeout()
{
var test =WebRequest.Create("https://10.11.12.13");
var t = test.GetResponseAsync();
//if (t != await Task.WhenAny(t, Task.Delay(500)))
if (t != Task.WhenAny(t, Task.Delay(150)).Result)
{
Console.WriteLine("Timed out");
test.Abort();
Console.WriteLine("Request aborted");
throw new Exception("Timed out");
}
return (await t).ContentLength.ToString();
}
此函數調用不存在的IP,總是超時。
爲什麼情況2)從TaskScheduler中拋出未觀察到的Unobserved異常: System.Net.WebException:請求被中止:請求被取消。
雖然案例1只會引發「超時」異常,但從未如此?
我等待任務的功能外: 嘗試{task.Wait()} {捕獲日誌異常}
謝謝, 詹姆斯