经过一定时间后调用异步方法
本文关键字:调用 异步方法 定时间 经过 | 更新日期: 2023-09-27 17:59:11
我在.Net C#中有以下代码,它进行调用,然后评估响应。如果响应为挂起,我想等待2秒钟,然后再次拨打电话。
我不知道如何在这里执行"等待2秒",也不知道如何使用与同步方法一起工作的计时器。
我受到PCL项目的限制。
private async Task<Response> ExecuteTask(Request request)
{
var response = await GetResponse();
switch(response.Status)
{
case ResponseStatus.Pending:
//wait 2 seconds
response = await ExecuteTask(request);
}
return response;
}
以下代码可以吗?
System.Threading.Timer timer;
private async Task<Response> ExecuteTask(Request request)
{
var response = await GetResponse();
switch(response.Status)
{
case ResponseStatus.Pending:
timer = new System.Threading.Timer(async obj =>
{
response = await ExecuteTask(request);
}, null, 1000, System.Threading.Timeout.Infinite);
}
return response;
}
在异步中,使用Task.Delay
等待
private async Task<Response> ExecuteTask(Request request)
{
var response = await GetResponse();
switch(response.Status)
{
case ResponseStatus.Pending:
await Task.Delay(TimeSpan.FromSeconds(2))
response = await ExecuteTask(request);
break;
}
return response;
}