带参数的C#service onCustomCommand?

时间:2016-04-01 03:41:19

标签: c# service parameters servicecontroller

我目前正在尝试实现一个运行特殊命令的服务,该命令执行传递参数的操作,例如:文件路径。我正在使用String name = "England vs Spain -- $13.50"; 命令:

cmd

但是,这个命令并没有为我提供任何输入参数的方法。方法如下:

sc control "ServiceName" 128

我可以输入的唯一参数是方法的 protected override void OnCustomCommand(int command) { switch(command) { case 128: Command.StartProcess(3); LogWriter.WriteLog("Next output: "); Command.StartProcess(4); break; case 129: // input extension, output extension, key id , working path try { test t1 = new test(); t1.readLog(@"C:\Users\Joe\Desktop\success.txt"); LogWriter.WriteLog(t1.input); LogWriter.WriteLog(t1.output); } catch(Exception e) { LogWriter.WriteLog(e.ToString()); } finally { LogWriter.WriteLog("abc"); } //LogWriter.WriteLog(t1.output + "def"); break; } } int。我想为command输入folder path。在上面的代码中,我必须硬编码不灵活且麻烦的路径。那么,无论如何都要解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

你为此重写了错误的方法。看看ServiceBase.OnStart。 它获取的参数数组可以在命令行中设置,如下所示:

sc start MyService arg1 arg2

根据需要解析args数组:

protected override void OnStart(string[] args)
{
   var path = args[0];
   var someParameter = args[1];
}
  

处理OnStart中服务的初始化参数   方法,不在Main方法中。 args参数中的参数   可以在服务的属性窗口中手动设置数组   服务控制台