我在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());
当我启动服务时,我收到以下错误:“索引超出了数组的范围”,这告诉我该参数未被读取。我哪里错了。
感谢;
答案 0 :(得分:3)
要知道的关键是流程可以包含多个服务。
传递给Main
的参数通常用于指示进程执行诸如安装,卸载,执行维护任务或进入服务控制循环(即调用ServiceBase.Run
)之类的操作。
另一方面,传递给OnStart
的参数来自服务控制管理器,而不是来自命令行。它们通常用于指示进程启动哪个进程(如果进程管理的服务不止一个)。
Main
参数被配置为可执行文件"的路径的一部分。
OnStart
参数配置为"启动参数"在服务设置中。
答案 1 :(得分:0)
你需要传递参数,否则args [0]为null ..在调试模式下goto项目设置传递构建参数,检查它是如何工作的