在MVC中触发长时间运行的进程,无需UI阻塞



我想要一些的通用指南

我有什么

  • UI单击按钮-->操作
    • 使用EF从表中获取所有foo
    • 读取所有相关的FTP文件(适用于Foo's)
    • 分析FTP文件
    • 更新Foo(EF批量更新)
    • 将Foo返回到UI

做这个大约需要2分钟

我想要什么

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

在过去的几个月里,我学到了很多,但我不知道如何开始这项工作。

将提供一些帮助

无按钮,触发此过程(每15分钟)

根据说明,该过程需要在服务器上重复运行,您可以在服务器端使用Timer代码。Timer有多种变体,每个变体都适合这个问题中指出的不同用途。

我偶然发现了一篇精彩的文章,展示了基于定时器+SignalR的UI更新的使用。请参阅此链接。

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

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

完成后自动刷新UI

这里有多种选择:

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

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

相关内容

最新更新