2015-07-21 74 views
1

我已经编写了一个Windows服务,该服务每天处理来自服务器的文件更新。C#应用程序将数据传递给Windows服务

我也有一个简单的C#应用​​程序,它有以下选择:

安装/卸载服务 开始/停止服务

而且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); 

做的伎俩?

回答

1

你不能用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); 

你可能会需要管理员权限来启动服务这种方式。

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

+0

呃,我编辑了hastly编写的字符串而不是args,但是我明白了,谢谢:)至于运行属性和东西,我不能这么做,这个想法是用户只是安装了服务并且不需要做任何事情,因为他们不需要知道任何事情。 – Januszoff

相关问题