5
我試圖通過ServiceBase.Run(ServiceBase[])
運行幾個類似的服務,但它只運行第一個。 MSDN並沒有明確否認這一點;這段摘錄是否意味着它們都必須是不同的類型? (大膽的是我,而不是MSDN)C#,Windows服務:ServiceBase.Run與幾個相同類型的服務
調用此重載在服務可執行文件的main()函數來加載的相關服務的數組。
我試圖通過ServiceBase.Run(ServiceBase[])
運行幾個類似的服務,但它只運行第一個。 MSDN並沒有明確否認這一點;這段摘錄是否意味着它們都必須是不同的類型? (大膽的是我,而不是MSDN)C#,Windows服務:ServiceBase.Run與幾個相同類型的服務
調用此重載在服務可執行文件的main()函數來加載的相關服務的數組。
這是意圖。這裏的想法是,您可以讓一個可執行文件創建「多個服務」,而不僅僅是一種類型的服務。
當向SCM註冊服務時,預計每個服務都是唯一的。這表明(我相信是這樣),你陣列中的每個元素都必須是ServiceBase的唯一實現。
如果你真的只是試圖有相同的服務的多個副本,我會重新考慮你的設計。只要讓服務使用同一個方法觸發多個線程,它將爲單個服務實例提供相同的效果。
多線程是最初的設計,我只是試驗這個。感謝您爲我清理。 – 2010-04-02 17:11:38
應該可以有2個服務實現相同的類型。您只需確保每個服務都有唯一的服務名稱。 如果您想讓2個服務具有相同的功能但使用不同的配置,則此方案特別有用。說不同的共享文件夾來讀取文件或連接到不同的數據庫。 我創建了一個名爲Daemoniq的Windows服務庫。它支持在一個進程中運行多個Windows服務。 http://code.google.com/p/daemoniq/wiki/MultipleWindowsServicesOneProcess。 – 2010-04-05 07:31:52
雖然有可能,但只要分開命名它們,它們本質上就是兩個單獨的服務;)就是說,您的方法很好。 – 2010-04-05 15:44:49