C# 应用程序将数据传递给 windows 服务

C# app to pass data to windows service

我写了一个 windows 服务,每天处理来自服务器的文件更新。

我还有一个简单的 C# 应用程序,它有以下选项:

Install/Uninstall 服务 Start/Stop 服务

还有 2 个带有登录按钮的文本框。

我的想法是,在登录按钮上单击,如果服务是 运行 然后停止它,在 OnStart 方法中传递登录信息,启动它并让服务工作(重新建立与服务器的连接等) ).

我的问题是,是否有一种简单的方法可以通过单击按钮将登录信息从文本框通过其 args[] 传递到 OnStart 方法?我搜索了解决方案,但他们都建议从带参数的命令行提供 运行 服务,我需要它完全从这个应用程序操作。

我也找到了一篇关于命名管道的文章,但我无法理解它。此外,该服务不需要传递任何其他参数,只需传递来自文本框的那 2 个字符串。

编辑:将

ServiceController sc = new ServiceController("ServiceName", Environment.MachineName);
string[] args = new string[2];
args[0] = txtBox1.Text;
args[1] = txtBox2.Text;

sc.Start(args);

成功了吗?

您不能使用字符串[0] 等,但这会起作用:

ServiceController sc = new ServiceController("ServiceName", Environment.MachineName);
string[] args = new string[2];
args[0] = txtBox1.Text;
args[1] = txtBox2.Text;

sc.Start(args);

您可能需要管理员权限才能以这种方式启动服务。

我不知道该项目的目标,但我还建议您查看服务属性(运行在命令提示符下 services.msc)。如果查看属性,则可以使用 Start Parameters 字段传递参数。您还可以 运行 使用“登录”选项卡以您想要的任何凭据提供服务,以防这些可能满足您的需要。