我正在尝试将参数传递给我的Windows服务,但OnStart方法中的args始终为空。
protected override void OnStart(string[] args)
{
System.Diagnostics.Debugger.Launch();
}
我在同一台计算机上安装了多个服务实例。每个应该使用不同的配置,以便获取服务名称,并根据该读取正确的配置。
答案 0 :(得分:1)
您是否通过服务小程序传递参数?服务不能接受命令行参数,而必须通过“计算机管理”窗口中的服务小程序传递。
答案 1 :(得分:0)
如果您需要服务名称,为什么不只看ServiceBase.ServiceName
?
protected override void OnStart(string[] args)
{
switch (this.ServiceName)
{
// ....
}
}
您可能还想考虑一种不基于服务名称的设计,可以在系统内轻松更改。
答案 2 :(得分:0)
使用设置文件(右键单击,添加项目,设置),这将自动生成应用程序配置文件。然后在每个实例的bin中,您可以在配置中设置值 - 如果您在不同位置运行它们。
如果多个服务实例在一个位置运行,则配置文件方法不起作用。在这种情况下,我建议使用void main(string[] args)
方法的常规exe,然后您可以在Windows中使用任务计划程序来定义参数和计划。