このコードを使用して、低速のインターネット接続に遭遇しないようにするために行っている要求呼び出しに 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