c#service:我无法在服务启动时传递一个参数传递

时间:2016-06-27 19:35:56

标签: c#

我在VS 2015中编写了一个c#服务,我需要在服务启动时传递一个参数。我像这样输入参数: enter image description here

我服务中的代码看起来像这样

protected override void OnStart(string[] args)
{
   System.Diagnostics.Debugger.Launch();
   try
   {
       base.OnStart(args);
       WriteToFile("args = " + args[0].ToString());

当我启动服务时,我收到以下错误:“索引超出了数组的范围”,这告诉我该参数未被读取。我哪里错了。

感谢;

2 个答案:

答案 0 :(得分:3)

要知道的关键是流程可以包含多个服务。

传递给Main的参数通常用于指示进程执行诸如安装,卸载,执行维护任务或进入服务控制循环(即调用ServiceBase.Run)之类的操作。

另一方面,传递给OnStart的参数来自服务控制管理器,而不是来自命令行。它们通常用于指示进程启动哪个进程(如果进程管理的服务不止一个)。

Main参数被配置为可执行文件"的路径的一部分。

OnStart参数配置为"启动参数"在服务设置中。

答案 1 :(得分:0)

你需要传递参数,否则args [0]为null ..在调试模式下goto项目设置传递构建参数,检查它是如何工作的