我如何以编程方式将参数传递给服务的OnStart方法,我还需要将其传播到服务中的Timer的Elapsed事件?
答案 0 :(得分:2)
在最简单的级别:当您调用ServiceBase.Run
时,您可以为其提供要执行的服务实例。只需将此声明为您服务的公共财产,并在致电Run
前指定:
Service1 myService = new Service1();
myService.SomeProp = 1;
ServiceBase.Run(myService);
然后在您的服务中阅读SomeProp
:
public int SomeProp { get; set;}
protected override void OnStart(string[] args)
{
int prop = SomeProp;
}
您也可以使用服务args,但这来自外部调用者(服务注册) - 而不是以编程方式(根据问题)。
答案 1 :(得分:0)
您可以考虑让OnStart方法从配置文件中读取参数,并使用单独的应用程序以编程方式更新该参数。