Esempio n. 1
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);
 }
Esempio n. 2
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;
        }
    }
Esempio n. 3
0
 private void OpenLogoWindow()
 {
     _logoWindow        = OpenWindow <LogoWindow>(LogoWindowPrefab);
     _logoWindow.Close += HandleCloseLogo;
 }