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

时间:2014-08-04 20:42:09

标签: c# asynchronous asp.net-web-api async-await c#-5.0

我有一个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){}

1 个答案:

答案 0 :(得分:5)

您可以将方法设为异步Task<string>,根据Task类中的Async方法和Proxy await >

示例:

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