让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){}
您可以使您的方法异步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);
}