让Web API控制器在完成之前等待IAsyncResult

本文关键字:等待 IAsyncResult Web API 控制器 | 更新日期: 2023-09-27 18:16:25

我有一个Web API控制器。它调用一个返回IAsyncResult的方法。当我调用控制器时,我得到错误

异步模块或处理程序在异步操作仍挂起时完成。

我如何让控制器等待asyncresult?

我打算使用await,但是我可能只是没有弄清楚这个用例的语法。

我没有找到关于SO的现有答案。

我使用c# 4.5

[HttpGet]
[Route("GetGridDataAsync")]
public string GetGridDataAsync()
{
        var proxy = new Proxy();
        return proxy.BeginGetDataAsync("test", ar => proxy.EndGetDataAsync(ar));             
}
public IAsyncResult BeginGetDataAsync(string r, AsyncCallback callback){}
public DataResponse[] EndGetDataAsync(IAsyncResult asyncResult){}

让Web API控制器在完成之前等待IAsyncResult

您可以使您的方法异步Task<string>,基于Proxy类和await中的Async方法创建Task

的例子:

public async Task<string> GetGridDataAsync()
{
    var proxy = new Proxy();
    return await Task.Factory.FromAsync(proxy.BeginGetDataAsync, proxy.EndGetDataAsync, "test", null);   
}