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函数?