我有一个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){}
答案 0 :(得分:5)
您可以将方法设为异步Task<string>
,根据Task
类中的Async
方法和Proxy
示例:
public async Task<string> GetGridDataAsync()
{
var proxy = new Proxy();
return await Task.Factory.FromAsync(proxy.BeginGetDataAsync, proxy.EndGetDataAsync, "test", null);
}