static void StartApplication() { frmMainMenu mainTemp = null; string userID = string.Empty; try { //Start connect to DB GlobalDB.Instance.Init(); try { GlobalDB.Instance.Connect(); } catch (Exception ex) { GlobalDB.Instance.Release(); XtraMessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); Application.Exit(); return; } DialogResult result = DialogResult.None; using (frmLogin login = new frmLogin()) { result = login.ShowDialog(); userID = login.UserID; } if (result == DialogResult.Yes) { HTN.BITS.UIL.PLASESS.Properties.Settings.Default.IsRuntime = true; HTN.BITS.UIL.PLASESS.Properties.Settings.Default.Save(); //go to next step using (frmMainMenu mainMenu = new frmMainMenu()) { GC.ReRegisterForFinalize(mainMenu); mainMenu.UserID = userID; mainTemp = mainMenu; Application.Run(mainMenu); GlobalDB.Instance.Disconenct(); GlobalDB.Instance.Release(); MemoryCleaner mc = new MemoryCleaner(); mc.Start(); GC.SuppressFinalize(mainMenu); mc.Stop(); GC.Collect(GC.MaxGeneration); GC.WaitForPendingFinalizers(); } HTN.BITS.UIL.PLASESS.Properties.Settings.Default.IsRuntime = false; HTN.BITS.UIL.PLASESS.Properties.Settings.Default.Save(); Application.Exit(); } else { //no running GlobalDB.Instance.Disconenct(); GC.Collect(GC.MaxGeneration); GC.WaitForPendingFinalizers(); Application.Exit(); } } catch (Exception ex) { XtraMessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); GlobalDB.Instance.Disconenct(); GlobalDB.Instance.Release(); if (mainTemp != null) { MemoryCleaner mc = new MemoryCleaner(); mc.Start(); GC.SuppressFinalize(mainTemp); mc.Stop(); GC.Collect(GC.MaxGeneration); GC.WaitForPendingFinalizers(); } Application.Exit(); } }