public RunAsServiceCommand(
     [NotNull] ILogger logger, [NotNull] IWindowsServiceConfiguration configuration,
     [NotNull] IBackgroundServicesManager backgroundServicesManager,
     [NotNull] IApplicationLifetimeManager applicationLifetimeManager)
 {
     _Logger                     = logger ?? throw new ArgumentNullException(nameof(logger));
     _Configuration              = configuration ?? throw new ArgumentNullException(nameof(configuration));
     _BackgroundServicesManager  = backgroundServicesManager ?? throw new ArgumentNullException(nameof(backgroundServicesManager));
     _ApplicationLifetimeManager = applicationLifetimeManager ?? throw new ArgumentNullException(nameof(applicationLifetimeManager));
 }
Esempio n. 2
0
        public TrayApp(
            [NotNull] IBackgroundServicesManager backgroundServicesManager,
            [NotNull] IApplicationLifetimeManager applicationLifetimeManager, [NotNull] ILogger logger)
        {
            _BackgroundServicesManager  = backgroundServicesManager ?? throw new ArgumentNullException(nameof(backgroundServicesManager));
            _ApplicationLifetimeManager = applicationLifetimeManager
                                          ?? throw new ArgumentNullException(nameof(applicationLifetimeManager));

            _Logger = logger ?? throw new ArgumentNullException(nameof(logger));
        }
Esempio n. 3
0
        public WindowsService(
            [NotNull] IWindowsServiceConfiguration configuration, [NotNull] IApplicationLifetimeManager applicationLifetimeManager,
            [NotNull] IBackgroundServicesManager backgroundServicesManager, [NotNull] ILogger logger)
        {
            if (configuration == null)
            {
                throw new ArgumentNullException(nameof(configuration));
            }

            _BackgroundServicesManager = backgroundServicesManager ?? throw new ArgumentNullException(nameof(backgroundServicesManager));
            _Logger = logger ?? throw new ArgumentNullException(nameof(logger));
            _ApplicationLifetimeManager = applicationLifetimeManager ?? throw new ArgumentNullException(nameof(applicationLifetimeManager));

            ServiceName = configuration.ServiceName;
            CanStop     = true;
        }
Esempio n. 4
0
        public ConsoleApplicationEntryPoint(
            [NotNull] IApplicationEntryPoint applicationEntryPoint, [NotNull] ILogger logger,
            [NotNull] IBackgroundServicesManager backgroundServicesManager,
            [NotNull] IApplicationLifetimeManager applicationLifetimeManager, [NotNull] IConfiguration configuration,
            [NotNull] IConsoleApplicationHelpTextPresenter consoleApplicationHelpTextPresenter, [NotNull] IBus bus)
            : base(logger, bus, applicationLifetimeManager)
        {
            _ApplicationEntryPoint = applicationEntryPoint ?? throw new ArgumentNullException(nameof(applicationEntryPoint));

            _ApplicationLifetimeManager = applicationLifetimeManager ?? throw new ArgumentNullException(nameof(applicationLifetimeManager));

            _Configuration = configuration ?? throw new ArgumentNullException(nameof(configuration));
            _ConsoleApplicationHelpTextPresenter = consoleApplicationHelpTextPresenter
                                                   ?? throw new ArgumentNullException(nameof(consoleApplicationHelpTextPresenter));

            _BackgroundServicesManager = backgroundServicesManager ?? throw new ArgumentNullException(nameof(backgroundServicesManager));
        }
 public WpfApplicationLifetimeManager([NotNull] IBackgroundServicesManager backgroundServicesManager)
 {
     _BackgroundServicesManager = backgroundServicesManager ?? throw new ArgumentNullException(nameof(backgroundServicesManager));
 }
Esempio n. 6
0
        public static void RunWinFormsMainWindow <T>(bool useBackgroundServices)
            where T : class, IServicesBootstrapper
        {
            var container = ContainerFactory.Bootstrap <ServicesBootstrapper <T> >();

            IBackgroundServicesManager  backgroundServicesManager  = container.Resolve <IBackgroundServicesManager>().NotNull();
            IApplicationLifetimeManager applicationLifetimeManager = container.Resolve <IApplicationLifetimeManager>();

            if (useBackgroundServices)
            {
                backgroundServicesManager.StartBackgroundServices();
            }

            try
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);

                Form mainForm = container.Resolve <Form>(serviceKey: "MainForm");

                bool closingHasBeenHandled = true;
                applicationLifetimeManager.GracefulTerminationCancellationToken.Register(
                    () =>
                {
                    if (closingHasBeenHandled)
                    {
                        return;
                    }

                    closingHasBeenHandled = true;
                    var close             = new Action(() => mainForm.Close());
                    if (mainForm.InvokeRequired)
                    {
                        mainForm.BeginInvoke(close);
                    }
                    else
                    {
                        close();
                    }
                });

                mainForm.FormClosed += (s, e) =>
                {
                    closingHasBeenHandled = true;
                    applicationLifetimeManager.SignalGracefulTermination();
                };

                Application.Run(mainForm);
            }
            catch (Exception) when(!Debugger.IsAttached)
            {
                Environment.ExitCode = 1;
                throw;
            }
            finally
            {
                if (useBackgroundServices)
                {
                    backgroundServicesManager.WaitForBackgroundServicesToStop().GetAwaiter().GetResult();
                }
            }
        }