【问题标题】:C# dynamic file system watcher serviceC# 动态文件系统观察服务
【发布时间】:2012-02-07 19:01:43
【问题描述】:

我希望能够开发一个能够运行多个实例的 Windows 服务,每个实例具有不同的参数。 理想情况下,我希望能够在基于浏览器的控制面板中维护这些参数。

我用 C# 编写了一个控制面板,它将配置数据保存到 XML 文件中。 由此我希望能够配置要运行的服务数量,以及它们的参数应该是什么。 我希望能够根据需要动态添加和删除服务实例。

我的问题是: 1)这甚至可能吗? 2) 我可以从控制面板启动具有特定属性的服务吗? (也许通过使用带有命令行参数的“NET START”?

[编辑] 我刚刚在网上看到了一些关于 ServiceController 类的东西;这可以用来添加和删除服务实例以及启动/停止服务吗? [/编辑]

感谢您的帮助

【问题讨论】:

    标签: c# windows service


    【解决方案1】:

    编辑:我最初的回答实际上是错误的。

    可以使用命令行参数,可以使用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?

    【讨论】:

    • 有道理。但是,该服务将使用文件系统观察程序,并且需要多个,因为要观察多个文件夹,并且每个文件夹都需要在文件出现时采取不同的操作。是否可以从同一服务中观看多个文件夹?到目前为止,我还没有设法弄清楚如何!谢谢:)
    • @bukko:首先,我最初的答案是错误的(我已经更正了)。其次,您当然可以在同一个服务中查看多个文件夹(例如,通过使用多次查看一个文件夹的代码)。
    • 好吧,似乎 - 正如你所说 - 我可以将多个观察者添加到同一个服务,这看起来是最好的解决方案。我发现一些代码可以将任意数量的观察者添加到 arrayList。但是,我不知道这段代码应该放在哪里,因为逻辑位置似乎是 InitialzeComponent 方法,除了我们不允许将代码放在那里:(
    猜你喜欢
    • 1970-01-01
    • 2011-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多