public static int Main(string[] args) { int exitCode = 0; InitLogger(); logger.Info("============================ START ============================"); bool createdNew = false; Mutex mutex = null; try { mutex = new Mutex(true, AppConsts.ApplicationId, out createdNew); if (!createdNew) { logger.Info("Another instance is already running..."); if (!Models.AppModel.AllowMutipleInstance) { var res = Services.WndProcService.ShowAnotherInstance(); return(0); //return -1; //... } } StartupParams = StartupParameters.Create(args); logger.Info(StartupParams.GetSysInfo()); try { MediaToolkitManager.Startup(); Shcore.SetProcessPerMonitorDpiAwareness(); var application = new App(); application.DispatcherUnhandledException += Application_DispatcherUnhandledException; application.InitializeComponent(); logger.Info("============================ RUN ============================"); application.Run(); } finally { MediaToolkitManager.Shutdown(); } } catch (Exception ex) { ProcessError(ex); } finally { if (mutex != null) { if (createdNew) { mutex.ReleaseMutex(); } mutex.Dispose(); } logger.Info("============================ THE END ============================"); } return(exitCode); }
static void Main(string[] args) { InitLogger(); logger.Info("========== START ============"); AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; StartupParams = StartupParameters.Create(args); //if (StartupParams.RunAsSystem) //{ // if (StartupParams.IsElevated) // { // if (RestartAsSystem() > 0) // { // return; // } // logger.Warn("Restart failed..."); // } // else // { // RunAsSystem(); // } //} if (StartupParams.IsElevated) { if (!StartupParams.NoRestart) {//Restart application with system permissions... if (RestartAsSystem() > 0) { return; } logger.Warn("Restart failed..."); // открываем процесс как обычно... //TODO:... } } bool createdNew = false; Mutex mutex = null; try { mutex = new Mutex(true, AppConsts.ApplicationId, out createdNew); if (!createdNew) { logger.Info("Another instance is already running..."); //... } bool tempMode = !createdNew; Config.Initialize(tempMode); MediaToolkitManager.Startup(); //DwmApi.DisableAero(true); Shcore.SetProcessPerMonitorDpiAwareness(); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); MainForm form = new MainForm(); logger.Info("========== RUN ============"); Application.Run(form); } finally { Config.Shutdown(); MediaToolkitManager.Shutdown(); if (mutex != null) { if (createdNew) { mutex.ReleaseMutex(); } mutex.Dispose(); } logger.Info("========== THE END ============"); } }