Exemple #1
0
        public static void Main(string[] args)
        {
            Application.Init();

            var appPaths = CreateApplicationPaths();

            var logManager = new NlogManager(appPaths.LogDirectoryPath, "server");

            logManager.ReloadLogger(LogSeverity.Info);

            var logger = _logger = logManager.GetLogger("Main");

            BeginLog(logger);

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            if (PerformUpdateIfNeeded(appPaths, logger))
            {
                logger.Info("Exiting to perform application update.");
                return;
            }

            try
            {
                RunApplication(appPaths, logManager);
            }
            finally
            {
                logger.Info("Shutting down");

                _appHost.Dispose();
            }
        }
Exemple #2
0
        public static void Main(string[] args)
        {
            var applicationPath = Assembly.GetEntryAssembly().Location;

            var options = new StartupOptions();

            // Allow this to be specified on the command line.
            var customProgramDataPath = options.GetOption("-programdata");

            var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath);

            var logManager = new NlogManager(appPaths.LogDirectoryPath, "server");

            logManager.ReloadLogger(LogSeverity.Info);
            logManager.AddConsoleOutput();

            var logger = _logger = logManager.GetLogger("Main");

            ApplicationHost.LogEnvironmentInfo(logger, appPaths, true);

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            try
            {
                RunApplication(appPaths, logManager, options);
            }
            finally
            {
                logger.Info("Shutting down");

                _appHost.Dispose();
            }
        }
Exemple #3
0
        private static void ShutdownApp()
        {
            _logger.Info("Calling ApplicationHost.Dispose");
            AppHost.Dispose();

            _logger.Info("AppController.Terminate");
            MenuBarIcon.Instance.Terminate();
        }
Exemple #4
0
        private static void DisposeAppHost()
        {
            if (!_appHostDisposed)
            {
                _logger.Info("Disposing app host");

                _appHostDisposed = true;
                _appHost.Dispose();
            }
        }
Exemple #5
0
        public static void Main(string[] args)
        {
            //GetEntryAssembly is empty when running from a mkbundle package
                        #if MONOMKBUNDLE
            var applicationPath = GetExecutablePath();
                        #else
            var applicationPath = Assembly.GetEntryAssembly().Location;
                        #endif

            var options = new StartupOptions();

            // Allow this to be specified on the command line.
            var customProgramDataPath = options.GetOption("-programdata");

            var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath);

            var logManager = new NlogManager(appPaths.LogDirectoryPath, "server");
            logManager.ReloadLogger(LogSeverity.Info);
            logManager.AddConsoleOutput();

            var logger = _logger = logManager.GetLogger("Main");

            BeginLog(logger, appPaths);

            AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;

            if (PerformUpdateIfNeeded(appPaths, logger))
            {
                logger.Info("Exiting to perform application update.");
                return;
            }

            try
            {
                RunApplication(appPaths, logManager, options);
            }
            finally
            {
                logger.Info("Shutting down");

                _appHost.Dispose();
            }
        }
Exemple #6
0
        /// <summary>
        /// Tool method : Start the windows message loop , and monitor status , close all when any of them stopped.
        /// </summary>
        static public void RunApplication(Action initHandler = null)
        {
            WriteDebugLine("RunApplication : " + ApplicationElapsed);

            bool mainLoopExited = false;

            var aspnetcoretask = ApplicationTask ?? Task.Delay(-1, ApplicationCTS.Token);

            ApplicationCTS.Token.Register(delegate
            {
                if (!aspnetcoretask.IsCompleted && !mainLoopExited && !IsWindowsEventLoopQuitRequested)
                {
                    WriteDebugLine("ApplicationCTS Requested. Waiting ApplicationTask shutdown..");
                }
            });

            aspnetcoretask.ContinueWith(delegate
            {
                ApplicationHost?.Dispose();

                if (!mainLoopExited && !IsWindowsEventLoopQuitRequested)
                {
                    WriteDebugLine("ApplicationTask Exited. Now shutdown CefWin");
                    QuitWindowsEventLoop();
                }
            });

            ////            START Windows Event Loop

            WriteDebugLine("Start WindowsEventLoop()");

            InternalDoEventLoop(initHandler);

            mainLoopExited = true;

            ////            RELEASE and Exiting

            if (!aspnetcoretask.IsCompleted)
            {
                WriteDebugLine("CefWin Exited. Now stop ApplicationCTS.");
                ApplicationCTS.CancelAfter(1);
            }

            ApplicationHost?.Dispose();

            //Thread.Sleep(1000);//Debug wait..

            if (!aspnetcoretask.IsCompleted && !_winformsExitFired)
            {
                WriteDebugLine("Exiting....Wait for ApplicationTask");
                int      loopcount = 0;
                DateTime dts       = DateTime.Now;
                while (!aspnetcoretask.IsCompleted)
                {
                    DoMessageLoopOnce();
                    loopcount++;
                    Thread.Sleep(10);
                    if (DateTime.Now - dts > TimeSpan.FromSeconds(1.5))
                    {
                        WriteDebugLine("timeout..");
                        break;
                    }
                }

                if (!aspnetcoretask.IsCompleted)
                {
                    WriteDebugLine(".....");
                    //CurrentProcess.Kill();
                }
                else
                {
                    WriteDebugLine("ApplicationTask Exited....final loops : " + loopcount);
                }
            }
            else if (!aspnetcoretask.IsCompleted)
            {
                WriteDebugLine("Will not wait ApplicationTask after Application.Exit called.");
            }

            for (int i = 0; i < 5; i++)
            {
                DoMessageLoopOnce();
            }

            CefShutdown();

            WriteDebugLine("RunApplication END");
        }