我需要通过一个名为“Time Out Reversal”(TOR)的特定场景将API集成到我的开发中
这意味着,无疑要遵守以下要求:
虽然这些要求对我来说非常清楚,但我确实找不到使用任务来实现它的方法。
例如,我知道如何延迟任务但我真的不知道如何设置启动任务的超时秒数
有什么建议吗?
答案 0 :(得分:1)
您可以轻松实现超时:
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
另一个选择是将Token
从CancellationTokenSource
创建的TimeSpan
传递给HttpClient
来电。