C# 与正在运行的Windows服务交互?

C# 与正在运行的Windows服务交互?,c#,.net,windows-services,C#,.net,Windows Services,如何在Windows服务运行时更改其设置 假设我将文件从一个目录处理到另一个目录。我希望能够声明下一个文件的输出和操作(在服务运行时)。如果我可以通过网站(SQL表或XML/TXT文件)远程编辑它,那就太完美了 不重新启动服务是否可能?我是否可以简单地在服务内部编写“针对每个文件的读取操作和设置文件的输出” 我宁愿避免现在的Windows通信基础。YOSH——您提出的两个选项可以工作,服务可以在处理文件夹之前反复读取文件Stutest.xml。您可以在不重新启动服务的情况下进行远程修补。有许多选

如何在Windows服务运行时更改其设置

假设我将文件从一个目录处理到另一个目录。我希望能够声明下一个文件的输出和操作(在服务运行时)。如果我可以通过网站(SQL表或XML/TXT文件)远程编辑它,那就太完美了

不重新启动服务是否可能?我是否可以简单地在服务内部编写“针对每个文件的读取操作和设置文件的输出”


<>我宁愿避免现在的Windows通信基础。

YOSH——您提出的两个选项可以工作,服务可以在处理文件夹之前反复读取文件Stutest.xml。您可以在不重新启动服务的情况下进行远程修补。

有许多选项。您可以使用许多进程间通信机制—COM、套接字、命名管道、共享内存—来使用“重新读取设置”命令提供管理接口


或者,您可以让服务监视更改配置文件;在Win32 API中,相关函数是
FindFirstChangeNotification()
;不确定是否有一个托管的等价物,最坏的情况-使用P/Invoke。

您可以使用一个数据库并保存和检索信息,但除非您已经在使用一个数据库,否则在设置一个新表、连接到该表等方面,这可能会有些过火

我个人建议使用*.config并使用。另外,公开一些可以访问/修改这些设置的方法,然后在需要值时使用它们


最后,您可以拥有自己的XML文件,其中包含这些值,并存储/检索这些值(甚至利用这些值),在处理时可以查询这些值。

您可以设置一个FileSystemWatcher来监视配置文件,以便在更新配置更改后立即重新加载这些更改


假设您也编写了Windows服务,您可以向该服务发送自定义命令。在控制器端,使用
ServiceController.ExecuteCommand()
发送命令。在服务类上,您重写
ServiceBase.OnCustomCommand()
以处理这些命令


然而,这只会帮助你触发一个动作。您仍然需要使用外部方法(例如,共享配置文件)来传达操作的详细信息。

如果您想避免使用WCF,那就太遗憾了。这将使与服务的丰富通信变得几乎微不足道。