我目前正在尝试实现一个运行特殊命令的服务,该命令执行传递参数的操作,例如:文件路径。我正在使用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
。在上面的代码中,我必须硬编码不灵活且麻烦的路径。那么,无论如何都要解决这个问题吗?
答案 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参数中的参数 可以在服务的属性窗口中手动设置数组 服务控制台