【发布时间】:2018-03-03 11:41:45
【问题描述】:
【问题讨论】:
标签: asp.net asp.net-core asp.net-core-webapi
【问题讨论】:
标签: asp.net asp.net-core asp.net-core-webapi
您可以在控制器方法中自己实现超时:
public async Task<IActionResult> DoNotHang()
{
var timeout = TimeSpan.FromMinutes(1);
var operation = LongOperationAsync(); // no "await" here!
if (await Task.WhenAny(operation, Task.Delay(timeout)) == operation)
{
var result = await operation; // obtain result (if needed)
return Ok(result == null ? "Null" : "Not null");
}
else
{
return Ok("Timed out (but still working, not cancelled)");
}
}
请参阅Asynchronously wait for Task<T> to complete with timeout 了解有关超时等待的更多详细信息,包括在完成时取消“其他”任务。
【讨论】: