views:

1282

answers:

2

Hi All, How do i programatically pass in arguments to OnStart method of a Service, which I further need to propagate to the Elapsed event of the Timer inside the service.

  • Amit
A: 

You could consider having the OnStart method read the arguments from a configuration file and programatically update that, using either a separate application.

Conrad
+2  A: 

At the simplest level: when you call ServiceBase.Run, you get to give it the service instances to execute. Simply declare this as a public property on your service, and assign prior to calling Run:

        Service1 myService = new Service1();
        myService.SomeProp = 1;
        ServiceBase.Run(myService);

Then read SomeProp in your service:

    public int SomeProp { get; set;}
    protected override void OnStart(string[] args)
    {
        int prop = SomeProp;
    }

You can also use the service args, but that is from the external caller (service registration) - not programatically (per the question).

Marc Gravell