代码之家  ›  专栏  ›  技术社区  ›  Giorgi

服务与节目互动

  •  2
  • Giorgi  · 技术社区  · 14 年前

    我正在用C#开发一个非常基本的windows服务。除了服务,我还需要开发一个程序,将用于设置服务的各种参数。

    由于服务和程序将以不同的方式运行,由不同的用户处理,我如何告诉服务参数已更改?

    ExecuteCommand 方法来指示设置已更改。然后服务将从文件中读取它们。

    另一种选择是使用管道将实际数据发送到服务,服务负责保存数据。

    虽然第一个选项更容易写,但第二个似乎更好。

    谢谢。

    3 回复  |  直到 14 年前
        1
  •  1
  •   moribvndvs    14 年前

    我有一个小项目,两者兼而有之。它使用IPC将设置传输到客户端,客户端在客户端修改设置并将其发送回去。当服务接收到新设置时,它使用ConfigurationManager保存设置并相应地更新自身。我们费了很大的劲才允许重新配置服务,而不需要重新启动。

    更新 为了满足Giorgi对更多信息的要求:

    我相信我们不能就这样 ConfigurationElements 或者服务上的部分,所以我们只是创建了一个简单的设置类并来回传递。在服务端,我们让服务将Settings类转换为更新的ConfigurationElement,并使用 ConfigurationManager

    最后,您需要确保执行实际工作的服务部分在安全的情况下定期检查配置更改,并且在配置启动时已经进行的处理不会受到更改的影响。一个简单的方法是当服务接收到来自客户端的信号时停止处理,当客户端说已经完成时恢复处理。

        2
  •  2
  •   Community Egal    7 年前

    由于您必须将这些设置保存在某个位置,因此可以让服务人员监视更改。如果将设置写入配置文件,则服务可以使用FileSystemWatcher。如果将它们写入注册表,则可以使用注册表观察程序(请参阅 SO ).

    但是执行命令非常干净。

        3
  •  2
  •   Community Egal    7 年前

    您可以将配置参数存储在文件中并使用 FileSystemWatcher

    也有不同的选择 Interprocess Communication