2012-01-11 33 views
3

我希望能夠開發一個能夠運行多個不同參數的實例的Windows服務。 理想情況下,我希望能夠在基於瀏覽器的控制面板中維護這些參數。C#動態文件系統觀察器服務

我已經在C#中編寫了一個控制面板,它將配置數據保存到XML文件中。 從這我想能夠配置運行的服務數量,以及它們的參數應該是什麼。 我希望能夠根據需要動態添加和刪除服務的實例。

我的問題是: 1)這甚至可能嗎? 2)我可以從控制面板啓動具有特定屬性的服務嗎? (也許通過使用「NET START」與命令行參數?

[編輯] 我剛剛在網上看到關於ServiceController類的東西;這可以用來添加和刪除服務的實例以及啓動/停止服務? [/編輯]

感謝所有幫助

回答

3

編輯:我最初的回答實際上是錯誤

可以使用的命令行參數。 s,或者與NET START(但是它只接受以反斜槓開頭的參數)或SC START(它將接受任何參數)。 您無法使用動態選擇的命令行參數啓動服務。參數也可以在服務註冊時指定,在這種情況下,它們在之後保持不變。

但是,啓動服務的多個實例聽起來像是錯誤的想法。沒有什麼能阻止你在運行時通過與之通信(例如ServiceController.ExecuteCommand)來配置服務的實例,這就是你應該做的事。

爲了與服務進行通信,例如參見How to communicate with a windows service from an application that interacts with the desktop?How to create and communicate with a C++ Windows Service in Visual Studio 2010?

+0

有道理。但是該服務將使用文件系統監視器,並且需要多個文件系統,因爲有幾個文件夾需要監視,並且每個文件夾都需要在出現文件時採取不同的操作。是否可以在同一服務中觀看多個文件夾?到目前爲止,我還沒有設法解決問題!謝謝:) – CompanyDroneFromSector7G 2012-01-11 12:23:19

+0

@bukko:首先,我的初步答案是錯誤的(我已糾正它)。其次,您當然可以在同一服務中觀看多個文件夾(例如,通過使用多次觀看一個文件夾的代碼)。 – Jon 2012-01-11 12:45:45

+0

好吧,看起來 - 如您所說 - 我可以添加幾個觀察員到相同的服務,看起來像最好的解決方案。我發現一些代碼將任意數量的觀察者添加到arrayList中。然而,我不知道這段代碼應該放在哪裏,因爲邏輯地方可能是InitialzeComponent方法,除了我們不允許把代碼放在那裏:( – CompanyDroneFromSector7G 2012-01-11 15:08:01