2015-04-02 140 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,您可以運行一些長時間運行的後臺任務,並概覽儀表板上的所有當前任務。試試看,我覺得它很酷。