我正在使用这段代码将 TimeOut 附加到我正在发出的请求调用中,以确保我们不会遇到缓慢的互联网连接 - 并且处理得当。
当我满足超时条件时,我收到一条错误消息,我无法在扩展函数中修复。
一般如何完成这项任务?
代码:
public static class SOExtensions
{
public static Task<T> WithTimeout<T>(this Task<T> task, TimeSpan duration)
{
return Task.Factory.StartNew(() =>
{
bool b = task.Wait(duration);
if (b) return task.Result;
return default(T);
});
}
}
用法:
var response = await HttpWebRequest
.Create(request)
.GetResponseAsync()
.WithTimeout(TimeSpan.FromSeconds(1));
我处理AggregateException
这个(并通过 a WebException
),但它仍然AggregateException
在超时失败时生成。