我在.NET4.5项目中使用AsyncController。控制器使用MVC 3模式实现,其中使用2种方法以实现异步。这是一个例子:
public class PortalController : AsyncController {
public void NewsAsync(string city) {
AsyncManager.OutstandingOperations.Increment();
NewsService newsService = new NewsService();
newsService.GetHeadlinesCompleted += (sender, e) =>
{
AsyncManager.Parameters["headlines"] = e.Value;
AsyncManager.OutstandingOperations.Decrement();
};
newsService.GetHeadlinesAsync(city);
}
public ActionResult NewsCompleted(string[] headlines) {
return View("News", new ViewStringModel
{
NewsHeadlines = headlines
});
}
}
在上面的代码中我需要调用:
private async Task<Foo> doWorkAsync(string bar) {
// do work async
}
我无法重构现有代码以使Controller返回Task&lt; ActionResult&gt;在这个时候,因为它看起来会花费很多时间。所以我的问题是从NewsAsync()中调用异步方法的最佳方法是什么?