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(); } }
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(); } }
private static void ShutdownApp() { _logger.Info("Calling ApplicationHost.Dispose"); AppHost.Dispose(); _logger.Info("AppController.Terminate"); MenuBarIcon.Instance.Terminate(); }
private static void DisposeAppHost() { if (!_appHostDisposed) { _logger.Info("Disposing app host"); _appHostDisposed = true; _appHost.Dispose(); } }
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(); } }
/// <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"); }