2012-04-20 72 views
0

我有一個windows服務,它監視正在創建的新文件的文件夾。一旦文件被放入,該服務將啓動另一個應用程序發送此文件路徑作爲參數。控制通過服務運行的應用程序的實例數

我正在尋找一種方法來控制Windows服務可以產生的第二個應用程序的實例數量,例如,如果有一種方法可以設置只產生第二個應用程序的5個實例。

我曾嘗試在第二個應用程序中使用值爲1的信號量,但這使得第二個應用程序在多個文件被刪除時一次執行一個文件,但Windows服務啓動的實例數爲熱文件夾中的文件數量。我不想打擾第二個應用程序,並想從中移除Semaphore。

Windows服務和第二個應用程序都是.NET應用程序。

+0

全球信號燈應該幫助你,但我沒有帶明白。它的Windows服務多次啓動第二個應用程序,或者多次啓動Windows服務? – Regfor 2012-04-20 15:43:54

+0

由於您的代碼(服務)正在創建新進程(並且由於很容易檢查您啓動的進程是否仍在運行),因此跟蹤有多少進程處於活動狀態應該是微不足道的。 – 2012-04-22 00:38:37

+0

大家好,註冊它是啓動第二個應用程序的服務。現在用Harry和Jaster建議的解決方案,直到我有辦法通過Jaster建議的IPC通過WCF執行此操作。 – Codehelp 2012-04-23 10:14:07

回答

0

快速&髒:使用Process類,並監視具有特定名稱的進程的數量。您可以訂閱Process.Exited事件或只是循環輪詢。

正確的解決方案:使用基於WCF IPC和服務之間創建一個握手&客戶

+0

嗨Jaster,感謝您的建議,將與快速和骯髒。任何建議或鏈接可以指導正確的解決方案使用基於WCF的IPC? – Codehelp 2012-04-23 10:08:10

+0

在答案中檢查我的WCF鏈接;) – Jaster 2012-04-24 13:06:35

0

如果您可以使用信號量,您是否嘗試將其初始值設置爲5?這將允許在阻塞之前對信號量進行5次併發訪問。

+0

由服務啓動的第二個應用程序Hi Spence實現了值爲1的信號量。由於第二個應用程序的設計中存在一個錯誤,它會掛起一段時間,唯一的方法是通過任務管理器。其他實例始終在等待,因爲最初的Semaphore從未被釋放。 – Codehelp 2012-04-23 10:11:50

相關問題