所以,我一直在开发一个使用 REST API 请求的应用程序,但是,由于某种原因,该 API 随机变得无响应(有时它会在 3 秒内给出响应,有时请求会花费很长时间,以至于它会抛出 timeOutexception)所以每当我调用一个电话时,如果在一定时间内没有检索到响应,我会使用此代码重新启动调用:
bool taskCompletion = false;
while(taskCompletion == false)
{
try
{
using (CancellationTokenSource cts = new CancellationTokenSource())
{
cts.CancelAfter(timeSpan);
await task(cts.Token);
taskCompletion = true;
}
}
catch (OperationCanceledException)
{
taskCompletion = false;
}
}
Run Code Online (Sandbox Code Playgroud)
我的 API 请求之一如下:
public static async Task<Result> task(CancellationToken ct)
{
string Url = baseurl
ApiHelper instance = new ApiHelper();
using (HttpResponseMessage response = await instance.ApiClient.GetAsync(Url, ct))
{
if (response.IsSuccessStatusCode)
{
var x = await response.Content.ReadAsStringAsync();
var result = …Run Code Online (Sandbox Code Playgroud)