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

本文关键字:windows 服务 应用程序 数据 | 更新日期: 2023-09-27 18:03:38

我写了一个windows服务,它处理每天从服务器更新文件。

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

安装/卸载服务启动/停止服务

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

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

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

我也找到了一篇关于命名管道的文章,但是我很难理解它。此外,服务不需要传递任何其他参数,只需要从文本框中传递这两个字符串。

编辑:

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

有效果吗?

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

不能使用string[0]等,但可以使用:

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

您可能需要管理员权限来启动此服务。

我不知道这个项目的目标,但我也建议检查一下服务属性(运行服务)。MSC(命令提示符)。如果查看属性,可以使用Start parameters字段传递参数。此外,您还可以使用Log On选项卡在任何您想要的凭据下运行该服务,以防这些可能适合您的需要。