【发布时间】:2013-03-04 09:21:05
【问题描述】:
我正在使用这段代码将 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(并通过WebException),但是当超时失败时它仍然会生成AggregateException。
【问题讨论】:
标签: c# exception-handling windows-runtime async-await dotnet-httpclient