2015-04-02 164 views
0

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

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

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

+0

我已经从您的问题的标题中删除了标签,这些标题是基于_ [应该在标题中包含“标签”吗?](http://meta.stackexchange.com/questions/19190/should-questions-include-标签在他们的标题)_其中共识是**否** _他们不应该。 – MickyD 2015-04-02 09:30:24

回答

0

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

1

你应该看看hangfire

使用hangfire,您可以运行一些长时间运行的后台任务,并概览仪表板上的所有当前任务。试试看,我觉得它很酷。