2013-07-22 25 views
0

我正在開發一個Windows服務,每15分鐘運行一次,並向iOS,Android和BlackBerry用戶發送推送通知。這些設備特定操作中的每一個都將在Windows服務中的單獨線程中運行。這一切都很好,但我們有可能需要一次發送多達50,000個推送通知。如果發生這種情況,可能需要15分鐘以上,所以在下一次服務運行之前,我想知道前一個進程是否已完成,如果尚未完成,請等待並排隊Windows服務以執行一旦前面的執行完成。我在線程方面很好,但我不知道實現上述場景的正確方法。 C#中有某種「等待」或「隊列」機制?如果已經運行,排隊Windows服務

+0

服務通常會持續運行 - 您的服務是實際的Windows服務,還是通過任務計劃程序進行的進程設置或其他? –

+0

這是一個實際的Windows服務,但如果Windows服務無法處理我的用例,我可以通過其他方式進行此操作。 – bgeveritt

+0

對不起,我應該澄清,Windows服務有一個計時器,雖然它不斷運行,但它只會每15分鐘執行一次邏輯。 – bgeveritt

回答

1

由於您的服務使用Timer來安排工作,因此它始終可以在工作開始時禁用定時器,並在工作結束時根據需要重新安排時間。

這允許很大的靈活性。如果一個工作隊列超過15分鐘,您可以決定是否延遲下一個,只需立即啓動(可能永遠運行),完全跳過它或任何您需要的,因爲定時器不會再次運行直到它重新啓用。