2012-01-11 43 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