Пример #1
0
        public async Task StartAsync()
        {
            var listener = new TcpListener(IPAddress.Loopback, 8081);

            listener.Start();
            var client = await listener.AcceptTcpClientAsync();

            client.Close();
            listener.Stop();
            ShutdownRequested?.Invoke(this, new EventArgs());
        }
Пример #2
0
        private bool DoShutdown(ShutdownRequestedEventArgs e, bool force = false, int exitCode = 0)
        {
            if (!force)
            {
                ShutdownRequested?.Invoke(this, e);

                if (e.Cancel)
                {
                    return(false);
                }

                if (_isShuttingDown)
                {
                    throw new InvalidOperationException("Application is already shutting down.");
                }
            }

            _exitCode       = exitCode;
            _isShuttingDown = true;

            try
            {
                // When an OS shutdown request is received, try to close all non-owned windows. Windows can cancel
                // shutdown by setting e.Cancel = true in the Closing event. Owned windows will be shutdown by their
                // owners.
                foreach (var w in Windows)
                {
                    if (w.Owner is null)
                    {
                        w.Close();
                    }
                }

                if (!force && Windows.Count > 0)
                {
                    e.Cancel = true;
                    return(false);
                }

                var args = new ControlledApplicationLifetimeExitEventArgs(exitCode);
                Exit?.Invoke(this, args);
                _exitCode = args.ApplicationExitCode;
            }
            finally
            {
                _cts?.Cancel();
                _cts            = null;
                _isShuttingDown = false;
            }

            return(true);
        }
Пример #3
0
        private void ProcessMessage(string message, IPAddress server)
        {
            if (!message.StartsWith(MessageShutdown))
            {
                return;
            }

            var cluster = message.Split('|')[1];

            ShutdownRequested?.Invoke(this, new ShutdownRequestedEventArgs {
                Address = server, Cluster = cluster
            });
        }
Пример #4
0
        protected override Response OnReceive(SimpleMessagePurport message)
        {
            switch (message)
            {
            case SimpleMessagePurport.ClientIsReady:
                ClientReady?.Invoke();
                return(new SimpleResponse(SimpleResponsePurport.Acknowledged));

            case SimpleMessagePurport.ConfigurationNeeded:
                return(HandleConfigurationRequest());

            case SimpleMessagePurport.RequestShutdown:
                ShutdownRequested?.Invoke();
                return(new SimpleResponse(SimpleResponsePurport.Acknowledged));
            }

            return(new SimpleResponse(SimpleResponsePurport.UnknownMessage));
        }
        private void ActualInteractHandler(IntPtr smcConn)
        {
            var e = new ShutdownRequestedEventArgs();

            if (_platform.Options?.EnableSessionManagement ?? false)
            {
                ShutdownRequested?.Invoke(this, e);
            }

            SMLib.SmcInteractDone(smcConn, e.Cancel);

            if (e.Cancel)
            {
                return;
            }

            _saveYourselfPhase = false;

            SMLib.SmcSaveYourselfDone(smcConn, true);
        }
        private void OnShutdownRequested(object sender, ShutdownRequestedEventArgs e)
        {
            ShutdownRequested?.Invoke(this, e);

            if (e.Cancel)
            {
                return;
            }

            // When an OS shutdown request is received, try to close all non-owned windows. Windows can cancel
            // shutdown by setting e.Cancel = true in the Closing event. Owned windows will be shutdown by their
            // owners.
            foreach (var w in Windows)
            {
                if (w.Owner is null)
                {
                    w.Close();
                }
            }
            if (Windows.Count > 0)
            {
                e.Cancel = true;
            }
        }
 private void ShutDownRequsted()
 {
     ShutdownRequested?.Invoke(this, EventArgs.Empty);
 }
Пример #8
0
 private static void OnShutdownRequested()
 {
     ShutdownRequested?.Invoke(null, EventArgs.Empty);
 }
Пример #9
0
 protected void OnShutdownRequested(bool force)
 {
     ShutdownRequested?.Invoke(this, force);
 }