0
これは、次の要件を満たすために、succintly、意味:
- 別のエンドポイント
要件はわかりますが、タスクを使用して実装する方法は実際には見つかりませんでした。
は例えば、私は、タスクを遅らせる方法を知っているが、私は本当にいけない開始タスク
任意の提案のために数秒でタイムアウトを設定する方法を知っていますか?
これは、次の要件を満たすために、succintly、意味:
要件はわかりますが、タスクを使用して実装する方法は実際には見つかりませんでした。
は例えば、私は、タスクを遅らせる方法を知っているが、私は本当にいけない開始タスク
任意の提案のために数秒でタイムアウトを設定する方法を知っていますか?
あなたは簡単にそうようにタイムアウトを実装することができます。また
public async Task TimoutReversal() {
var timeout = TimeSpan.FromSeconds(10);
try {
//assumes HttpClient
Client.Timeout = timeout;
await Client.GetAsync(firstEndpoint);
} catch (OperationCanceledException ex) {
await Client.DeleteAsync(secondEndpoint);
}
}
//or
public async Task TimoutReversal() {
var timeout = TimeSpan.FromSeconds(10);
var firstTask = Client.GetAsync(firstEndpoint);
if (await Task.WhenAny(firstTask, Task.Delay(timeout)) == firstTask) {
//success
}else {
//failure
await Client.DeleteAsync(secondEndpoint);
}
}
SO上でここに保護された答えを参照してください。Task with timeout
別のオプションは、HttpClient
へTimeSpan
から作成CancellationTokenSource
からToken
を渡すことですコール。