예제 #1
0
        /// <summary>
        /// Splashフォームを消す
        /// </summary>
        public static void CloseSplash()
        {
            lock (syncObject)
            {
                if (_thread == null)
                {
                    return;
                }

                if (_mainForm != null)
                {
                    _mainForm.Activated -= new EventHandler(_mainForm_Activated);
                }

                //Splashが表示されるまで待機する
                if (splashShownEvent != null)
                {
                    splashShownEvent.WaitOne();
                    splashShownEvent.Close();
                    splashShownEvent = null;
                }

                //Splashフォームを閉じる
                //Invokeが必要か調べる
                if (_form != null)
                {
                    if (_form.InvokeRequired)
                    {
                        _form.Invoke(new MethodInvoker(CloseLogoWindow));
                    }
                    else
                    {
                        CloseLogoWindow();
                    }
                }

                //メインフォームをアクティブにする
                if (_mainForm != null)
                {
                    if (_mainForm.InvokeRequired)
                    {
                        _mainForm.Invoke(new MethodInvoker(ActivateMainForm));
                    }
                    else
                    {
                        ActivateMainForm();
                    }
                }

                _form     = null;
                _thread   = null;
                _mainForm = null;
            }
        }
예제 #2
0
 //スレッドで開始するメソッド
 private static void StartThread()
 {
     //Splashフォームを作成
     _form = new LogoWindow();
     //Splashフォームをクリックして閉じられるようにする
     _form.Click += new EventHandler(_form_Click);
     //Splashが表示されるまでCloseSplashメソッドをブロックする
     _form.Activated += new EventHandler(_form_Activated);
     //Splashフォームを表示する
     Application.Run(_form);
 }