private void Start(MainWindow window, string[] args) { window.MaxLogLevel = LogLevel.Info; Display.SetDisplay(window); Log.AddLogger(window); // Parse arguments, display help screen when appropriate var options = new ProgramOptions(); try { options.Load(args); } catch (Exception ex) { Display.WriteText("Bad options: {0}\n\n{1}", ex.Message, options.GetOptions()); window.Terminate(true); return; } if (options.ShowHelp) { Display.WriteText("{0}", options.GetOptions()); window.Terminate(true); return; } // Set log level from options window.MaxLogLevel = options.ConsoleLogLevel >= 0 && options.ConsoleLogLevel <= 4 ? (LogLevel)options.ConsoleLogLevel : LogLevel.Info; // Set initial window state if (options.StartWindowMaximized) { window.WindowState = WindowState.Maximized; } else if (options.StartWindowMinimized) { window.WindowState = WindowState.Minimized; } // Run in the background new Task(() => { Main(options); window.Terminate(!options.ExitWhenDone); }).Start(); }