Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to pass HostControl instance to custom host service in TopShelf?

This question has been asked elsewhere on SO, but there is no indication of how I get an instance of a HostControl as the post suggests. My TopShelf main program looks like this:

    public static void Main()
    {
        HostFactory.Run(CreateHost);
    }

    private static void CreateHost(HostConfigurator x)
    {
        x.UseLog4Net();

        x.Service<EventBroker>(s =>
        {
            s.ConstructUsing(name => new EventBroker());
            s.WhenStarted(tc => tc.Start());
            s.WhenStopped(tc => tc.Stop());
        });

        x.StartAutomatically();

        x.RunAsNetworkService();
    }

Any suggestions?

like image 458
Brent Arias Avatar asked Jan 09 '23 02:01

Brent Arias


1 Answers

Change WhenStarted to have HostControl passed to it like this

   s.WhenStarted((tc, hostControl) => tc.Start(hostControl));

Per TopShelf documentation here http://topshelf.readthedocs.org/en/latest/configuration/config_api.html

like image 131
n00b Avatar answered Jan 27 '23 08:01

n00b