Windows服务访问'启动参数'来自Topshelf

时间:2014-10-31 22:32:33

标签: windows-services topshelf

我已经为topshelf程序添加了命令行支持,如下所示:

HostFactory.Run(hostConfigurator =>
{
    hostConfigurator.AddCommandLineDefinition("params", f => { startParams = f; });    
    hostConfigurator.ApplyCommandLine(); 
}

这很好用。

当我将其作为服务安装时,我希望在已安装的服务中启动参数'它会起到同样的作用,但它没有。

任何人都可以告诉我如何访问“启动参数”#39;来自TopShelf?

我希望多次(使用不同的实例名称)安装相同的服务,这些服务因启动参数而异,我也想用它来传递测试值。

我想只是以编程方式访问这些标准服务可能会让我指向正确的方向。

感谢。

1 个答案:

答案 0 :(得分:1)

与服务安装相关的参数,例如servicename,description,instancename等,可以按如下方式访问

HostFactory.Run(x =>
{
    x.Service((ServiceConfigurator<MyService> s) =>
    {
        s.ConstructUsing(settings =>
        {
            var instanceName= settings.InstanceName;
                return new MyService();
        });
    }
}

或者,如果您的MyService实现了ServiceControl

        HostFactory.Run(x =>
        {
            x.Service<MyService>((s) =>
            {
                var instanceName= s.InstanceName;

                return new MyService();
            });
         }
/***************************/

class MyService : ServiceControl
{
    public bool Start(HostControl hostControl) {  }

    public bool Stop(HostControl hostControl)  {  }
}

我不确定你的意思&#34;启动参数&#34;,如果上面不是你想要的,尝试用伪代码示例来解释你想要实现的目标。