等待不等待休息响应C#.netCore

时间:2019-06-20 20:03:14

标签: c# asynchronous async-await restsharp

我有一个必须连续进行REST调用的客户端,REST调用将执行某些功能并处于状态。在运行rest调用的同时,客户端应每隔几秒钟轮询一次服务器,以检查服务器端进程的状态(以检查服务器是否完成了原始rest调用所执行的功能。

客户端有以下呼叫:

 await runMultiScan(scanId, exitActions);
 handleExitActions(exitActions);

runMultiScan通过以下方式实现:

    private async Task runMultiScan(Guid scanId, List<Action> exitActions)
    {                        
       var client = new RestClient(baseURL);

        var request = new RestRequest(@"api/scans", Method.POST);
        request.AddJsonBody(new Scan
        {
            sid = scanId.ToString(),
            scanPath = scansParentPath

        });
        var cancellationTokenSource = new CancellationTokenSource();
        await client.ExecuteTaskAsync(request, cancellationTokenSource.Token);
    }

并行地,我具有getStatus函数,该函数还对服务器进行一次调用。 奇怪的是,在“ runMultiScan”中的rest调用花费了几分钟之后,它退出了等待状态并转到handleExitActions(exitActions);

虽然服务器尚未达到RestRequest的完成:

    [HttpPost]
    public void Post([FromBody] ScanData scanInfo)
    {

       currentScan = new Scan(scanInfo);
      currentScan.runScan();                       

    }

,并且服务器上的进程仍在runScan内,并且未返回。 发生这种行为的原因可能是什么(等待不等待发布完成)?

2 个答案:

答案 0 :(得分:0)

那是超时!谢谢你golobich!

答案 1 :(得分:0)

不确定,请记住我是否正确,RestClient类的默认超时设置为100秒?因此服务器上的功能要花费100多个,RestClient超时也应该如此。检查服务器出了什么问题,潜在的死锁...?