在没有UI阻塞的情况下触发MVC中的长时间运行过程

时间:2014-11-06 05:26:25

标签: asp.net-mvc

我想有一些一般性指导

我有什么

  • UI点击按钮 - >行动
    • 使用EF
    • 从表中获取所有foo
    • 阅读所有相关的FTP文件(对于Foo's)
    • 解析FTP文件
    • 更新Foo(EF批量更新)
    • 将Foo返回到UI

这需要大约2分钟

我想要什么

  • 没有按钮,触发此过程(每15分钟一次)
  • 完成后自动刷新UI

过去几个月我学到了很多,但我不知道怎么开始这个。

一些帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

  

没有按钮,触发此过程(每15分钟一次)

根据说明,该过程需要在服务器上重复运行,您可以在服务器端代码上使用Timer。 Timer有各种变体,每个变量都符合指向in this question的不同目的。

我碰巧找到了一篇很棒的文章,演示了如何使用基于Timer + SignalR的UI更新。请参阅此link

要在客户端触发进程,您可以使用计时器并将其配置为每15分钟运行一次。您可以使用setInterval和clearInterval API:

var timer = setInterval(function(){LoadValues(), 5000});
  

完成后自动刷新UI

您有多种选择:

  1. 首先也可能最简单的是,当你的计时器功能触发时,向服务器发送一个AJAX请求并获取更新的数据。用更新的数据替换UI上的内容。这基本上是民意调查。

  2. 您可以使用SignalR刷新UI。当更新可用时,其服务器将更新推送到连接的客户端。更多信息here