【发布时间】:2013-02-10 22:24:04
【问题描述】:
我之前从未尝试过在 mvc 中运行异步任务,所以我不确定该往哪个方向发展。
我有一个类可以从大量数据中生成一个 excel 文件,这可能需要一些时间。我想要它,所以当用户单击链接时,他们会收到一条消息,说“完成后会通知您”并且任务开始,然后他们可以继续使用网络应用程序,并且一旦完成,他们就会收到屏幕上的通知完成,最好通过 ajax 可能有几个任务同时运行。如果我能看到任务是否仍在运行,那就太好了。
这些任务从不安排,总是“按需”
哪种方法最适合这种情况?我看到有 system.threading、signalr、quartz.net 等,但有些可能是矫枉过正。
谢谢,
山姆
【问题讨论】:
-
用户是否可以离开他们开始任务的页面,但在任务完成后在另一个页面上得到确认?还是他们会停留在同一页面上?第一个可能很难实现,而 AJAX 请求可能是完成第二个所需的全部。
-
另一个页面,如果有办法在 c# 中检查任务是否完成,我可以编写一个 web 服务来使用 ajax 在计时器上返回真或假
-
我能想到 2 种可能性:标准 AJAX 定期轮询和 SignalR。
-
谢谢大家,我最终使用了一个包含Task.Factory.StartNew() 的Asynchronous Controller,并且目前有一个ajax 调用轮询来检查任务是否完成。它并不完美,所以一旦我开始工作,我会转到SignalR。
标签: c# asp.net-mvc asynchronous