长时间运行的进程

时间:2015-04-02 01:09:21

标签: c# asp.net-mvc asp.net-mvc-5

我想从网页(MVC5)启动一个长时间运行的进程,并将请求发送到Windows服务(除非有更好的方法?)。问题是,我不希望这个过程开始两次。

该过程将使用SignalR广播进度(我将该部分排序),但使用.Net 4.5 - 如何确保第一个请求开始,第二个请求被拒绝(即使它们相隔毫秒)。

我知道我们可以使用Windows服务,数据库。关于最佳实践的想法?

2 个答案:

答案 0 :(得分:1)

你应该看看hangfire

使用hangfire,您可以运行一些长时间运行的后台任务,并概述仪表板上的所有当前任务。尝试一下,我认为这很酷。

答案 1 :(得分:0)

您可以将其放在键/值对中,例如将请求映射到进程的缓存。您在ASP.NET中使用了Cache个对象。如果密钥不在缓存中,则需要注意检查Windows服务。数据库方法在持久性方面更安全。因此,您不必轮询Windows服务。无论哪种方式,您都需要在流程完成时切换键/值对。