-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()} {捕获日志异常}
谢谢, 詹姆斯