我在.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;
}
答案 0 :(得分:1)
在异步中,您等待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;
}