BottomShelf.Host.HostedService.Start C# (CSharp) Method

Start() public method

public Start ( BottomShelf.Host.Monitoring.FileSystemWatcher watcher, System.Action removeHostedService ) : void
watcher BottomShelf.Host.Monitoring.FileSystemWatcher
removeHostedService System.Action
return void
        public void Start(FileSystemWatcher watcher, Action removeHostedService)
        {
            var appDomainSetup = new AppDomainSetup { ConfigurationFile = string.Format("{0}.config", assemblyFile), ShadowCopyFiles = "true", ApplicationBase = Path.GetDirectoryName(assemblyFile)};
            appDomain = AppDomain.CreateDomain(string.Format("BottomShelf.Host - {0}", HostedServiceTypeName), new Evidence(), appDomainSetup);

            try
            {
                hostedServiceInstance = (HostedServiceBase)appDomain.CreateInstanceAndUnwrap(assemblyName.FullName, HostedServiceTypeName);
                hostedServiceInstance.Start();
            }
            catch(Exception exception)
            {
                logger.Error(exception);
                removeHostedService();
            }
        }

Usage Example

 private void StartHostedService(HostedService hostedService, FileSystemWatcher watcher)
 {
     logger.Info("Starting service '{0}'.", hostedService.HostedServiceTypeName);
     hostedService.Start(watcher, () => hostedServices.Remove(hostedService));
     logger.Info("Started service '{0}'.", hostedService.HostedServiceTypeName);
 }