填充来自View中不同线程中运行的不同API的结果

时间:2016-08-09 07:47:01

标签: c# ajax asp.net-mvc multithreading

我在ASP.Net 4.0 MVC项目中工作,我在同一时间在不同的线程中调用不同的API。我正在使用Task.Factory.StartNew()为此目的,它具有事件.ContinueWith(),将在每个线程完成时运行。

我的查询是如何在View中填充不同时间的数据(因为API花费不同的时间)(猜猜它有一些ajax)。目前我正在等待所有线程完成,然后最后填充所有结果。

需要一些指导才能节省一些时间。

2 个答案:

答案 0 :(得分:0)

制作一个字典/ JSON的回复,并与任务共享此变量,因此任何完成将填补它的部分。

您可以创建一个刷新周期,以便在某些任务仍在运行时使用AJAX添加新结果。

也许这会给你一些如何刷新的想法 Refresh/reload the content in Div using jquery/ajax

答案 1 :(得分:0)

仅在使用MVC框架返回操作后才能更新视图。 你能做什么

  1. 将您的操作标记为异步并等待所有任务(await Task.WhenAll) - 这将为您节省一个线程(处理请求并且您当前正在阻止的线程),但用户体验将是相同的 - 他将不得不等待所有人看到完整的视图
  2. 您可以立即返回视图,而无需启动任何API调用。视图应该由多个部分组成,这些部分将使用AJAX调用其他操作来处理每个API调用。仅当视图由依赖于单个API的结果的不同区域组成时,此方法才有效。如果您需要为视图中的单个字段提供大量API数据,我将采用方法#1