经过一定时间后调用异步方法

本文关键字:调用 异步方法 定时间 经过 | 更新日期: 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;
}