C# 从其他控制器调用异步操作';同步动作

C# 从其他控制器调用异步操作';同步动作,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,假设我们在控制器中定义了异步操作: public class PortalController : AsyncController { public void NewsAsync(string city) { AsyncManager.OutstandingOperations.Increment(); NewsService newsService = new NewsService(); newsService.GetHeadlinesCompleted += (s

假设我们在控制器中定义了异步操作:

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
    });
}
当我从浏览器调用它时,一切都正常。但我想从另一个同步控制器调用此操作(新闻)。有什么方法可以采取行动并得到结果吗

public class PortalController: Controller {
    public ActionResult News(string city) {
        NewsService newsService = new NewsService();
        ViewStringModel headlines = newsService.GetHeadlines(city);
        return View(headlines);
    }
} 

您应该查看其余的部分,如果没有某种类型的ActionResult来获取数据,您就无法获得视图。

这样,调用是同步的,并且会阻塞主线程。我已经提到我希望操作是异步的。无论如何,我设法做到了这一点,通过返回
任务
而不仅仅是作废。很抱歉,我没有完全理解你的问题。那么,您是否能够更新代码以返回结果而不是void函数?