2010-11-24 42 views
1

我试图将参数传递给我的Windows服务,但OnStart方法中的参数始终为空。如何将参数传递给Windows服务

protected override void OnStart(string[] args) 
     { 
      System.Diagnostics.Debugger.Launch(); 
     } 

我在同一台机器上安装了多个我的服务实例。每个应该使用不同的配置,所以想法获得服务名称,并根据它读取正确的配置。

回答

1

您是否通过服务小程序传递参数?服务无法接受命令行参数,而是必须通过“计算机管理”窗口中的服务小程序进行传递。

+0

当我尝试添加“开始参数”字段时,我仍然得到空的参数。 – UshaP 2010-11-24 21:48:01

+0

必须关闭某些东西,将开始参数转换为您提到的参数列表。另外,我找到了一篇关于在安装程序中指定这些参数的文章:http://stackoverflow.com/questions/200163/am-i-running-as-a-service/2111492#2111492 – 2010-11-24 21:56:09

0

如果你想要的服务名称,为什么不看看ServiceBase.ServiceName

protected override void OnStart(string[] args) 
{ 
    switch (this.ServiceName) 
    { 
     // .... 
    } 
} 

您可能还想考虑一个不基于服务名称的设计,该设计可以在系统内轻松更改。

0

使用设置文件(右键单击,添加项目,设置)将自动生成应用程序配置文件。然后在每个实例的bin中,您可以在config中设置值 - 如果您在不同位置运行它们。

如果是多个服务实例耗尽一个位置,那么配置文件方法将不起作用。在这种情况下,我会推荐一个具有void main(string[] args)方法的常规exe文件,然后您可以在Windows中使用Task Scheduler来定义参数和计划。

相关问题