【问题标题】:C# service onCustomCommand with parameters?带有参数的 C# 服务 onCustomCommand?
【发布时间】:2016-04-01 03:41:19
【问题描述】:

我目前正在尝试实现一个服务,该服务运行一个特殊命令,该命令对传递的参数执行某些操作,例如:文件路径。我正在使用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;
        }
    }

我可以输入的唯一参数是该方法的intcommand。我想为t1.readLog(); 输入folder path。在上面的代码中,我必须对不灵活且麻烦的路径进行硬编码。那么,有没有办法解决这个问题?

【问题讨论】:

    标签: c# service parameters servicecontroller


    【解决方案1】:

    您为此覆盖了错误的方法。看看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 参数中的参数 可以在服务的属性窗口中手动设置数组 服务控制台

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-10
      • 2015-03-31
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2022-06-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多