public static void Restart(StartupOptions startupOptions) { _logger.Info("Disposing app host"); _appHost.Dispose(); _logger.Info("Starting new instance"); string module = startupOptions.GetOption("-restartpath"); string commandLineArgsString = startupOptions.GetOption("-restartargs") ?? string.Empty; if (string.IsNullOrWhiteSpace(module)) { module = Environment.GetCommandLineArgs().First(); } if (!startupOptions.ContainsOption("-restartargs")) { var args = Environment.GetCommandLineArgs() .Skip(1) .Select(NormalizeCommandLineArgument); commandLineArgsString = string.Join(" ", args.ToArray()); } _logger.Info("Executable: {0}", module); _logger.Info("Arguments: {0}", commandLineArgsString); Process.Start(module, commandLineArgsString); _logger.Info("Calling Environment.Exit"); Environment.Exit(0); }
private static void StartNewInstance(StartupOptions startupOptions) { _logger.Info("Starting new instance"); string module = startupOptions.GetOption("-restartpath"); string commandLineArgsString = startupOptions.GetOption("-restartargs") ?? string.Empty; if (string.IsNullOrWhiteSpace(module)) { module = Environment.GetCommandLineArgs().First(); } if (!startupOptions.ContainsOption("-restartargs")) { var args = Environment.GetCommandLineArgs() .Skip(1) .Select(NormalizeCommandLineArgument) .ToArray(); commandLineArgsString = string.Join(" ", args); } _logger.Info("Executable: {0}", module); _logger.Info("Arguments: {0}", commandLineArgsString); Process.Start(module, commandLineArgsString); }
public static void Main(string[] args) { var applicationPath = Assembly.GetEntryAssembly().Location; SetSqliteProvider(); var options = new StartupOptions(Environment.GetCommandLineArgs()); // Allow this to be specified on the command line. var customProgramDataPath = options.GetOption("-programdata"); var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath); _appPaths = appPaths; using (var logManager = new SimpleLogManager(appPaths.LogDirectoryPath, "server")) { _logManager = logManager; var task = logManager.ReloadLogger(LogSeverity.Debug, CancellationToken.None); Task.WaitAll(task); logManager.AddConsoleOutput(); var logger = _logger = logManager.GetLogger("Main"); ApplicationHost.LogEnvironmentInfo(logger, appPaths, true); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; RunApplication(appPaths, logManager, options); _logger.Info("Disposing app host"); if (_restartOnShutdown) { StartNewInstance(options); } } }