是否可以从ASP.NET MVC中的AsyncController调用异步方法

时间:2016-04-27 10:20:44

标签: c# asp.net-mvc

我在.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()中调用异步方法的最佳方法是什么?

0 个答案:

没有答案
相关问题