2017-01-12 52 views
0

我試圖實現一個邏輯爲我的.NET MVC應用程序在那裏我會觸發計劃任務在我的應用程序中的以下基礎上:預成型的計劃任務在C#.NET MVC應用程序

First scheduled task to run from 00 am to 1 am in the morning 
Second scheduled task to run from 1:10 am to 08:00 am in the morning 
Third scheduled task to run from 8:15 am to 11:15 pm every 1 hour 

這將重複每天365天,每年...

.NET或外部庫中的哪種機制可以用來實現這個最簡單的方法,只需少量代碼?

我試圖用Quartz.NET庫來實現它,但我不喜歡它,我有兩個計劃任務運行,其中一個將永遠不會運行在所有的計劃的時間...

+1

相信我,你不想在你的MVC應用程序中實現這一點。如果你不相信我,我邀請你閱讀以下博客文章:http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp -net.aspx/ –

+0

@DarinDimitrov爲什麼不,你能否詳細說明一下? – User987

+0

@DarinDimitrov你會怎麼做? – User987

回答

3

你不希望在多種原因Web應用程序執行長時間運行的和經常性的後臺任務。你可以通過following blog post,這很好地概括了它們。

我建議您將此邏輯移入單獨的Windows服務甚至控制檯應用程序,並且可以按照所需的時間間隔使用Windows任務計劃程序來計劃其運行。

這樣做的好處是,您將從您的Web應用程序中卸載您的Web應用程序,從而執行長時間運行的任務,這將耗費您Web服務器的寶貴資源。當然,Web服務器和工作服務可以共享一個通用的集中式數據存儲或消息傳遞層,以便在必要時進行通信。

+0

驚人的回覆!不是一行代碼,但是您提供的信息比編寫1000行代碼更有價值!我會努力工作,非常感謝! – User987

+0

如果這不是一個長時間運行的任務,您可以通過Web服務在您的Web應用程序中公開功能,然後使用控制檯應用程序僅通過Web服務調用公開的功能。控制檯應用程序可以通過Windows計劃程序按照需要的計劃運行。 –

1

視覺Cron是一個可以使用的體面任務調度程序。我們使用它,在我們的asp.net/mvc/webapi服務器上調用服務方法。

http://www.visualcron.com/

+0

嗨瑞克,這是開源還是? – User987

0

對於ASP.NET MVC計劃任務有以下幾個選項:

如果您嘗試自己實現自定義解決方案,請小心,因爲與請求無關的線程中的任何異常都會暫停整個過程。

相關問題