示例#1
0
        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();
            }
        }