/////////////////////////////////////////////////////////////////////// #region Application Exit Event Handler private static void ApplicationExit( object sender, EventArgs e ) { Configuration configuration; lock (syncRoot) { configuration = savedConfiguration; } TraceOps.Trace(configuration, "Exiting.", TraceCategory); string error = null; if (!FileOps.DeleteInUse(configuration, ref error)) { Fail(configuration, assembly, error, TraceCategory); } }
[STAThread] /* WinForms */ private static int Main( string[] args ) { Configuration configuration = null; string error = null; if (Configuration.TryCreate( assembly, ref configuration, ref error) && Configuration.FromFile( null, true, ref configuration, ref error) && Configuration.FromArgs( args, true, ref configuration, ref error) && Configuration.Process( args, configuration, false, ref error)) { #if DEBUG TraceOps.Trace(configuration, "WARNING: This is a DEBUG build and is intended only " + "for development and in-house testing.", TraceCategory); #endif #if MONO TraceOps.Trace(configuration, "WARNING: This is a Mono build, some features will be " + "unavailable, including some features used to enhance " + "security.", TraceCategory); #endif if (!configuration.IsValid) { error = "Invalid configuration."; goto error; } if (!configuration.IsSigned) { error = "Self-check failed, cannot continue."; goto error; } try { using (Mutex.OpenExisting(configuration.MutexName, MutexRights.Synchronize)) { error = "Detected that an instance of Eagle is " + "running, please close it and try again."; } } catch (WaitHandleCannotBeOpenedException) { try { lock (syncRoot) { savedConfiguration = configuration; } Application.ApplicationExit += ApplicationExit; Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); using (UpdateForm form = UpdateForm.Create( configuration, ref error)) { if (form != null) { Application.Run(form); return(0); /* SUCCESS */ } } } catch (Exception e) { TraceOps.Trace(configuration, e, TraceCategory); error = "User interface failed."; } } catch (Exception e) { TraceOps.Trace(configuration, e, TraceCategory); error = "Running instance detection failed."; } } error: Fail(configuration, assembly, error, TraceCategory); return(1); /* NOT REACHED */ }