//スレッドで開始するメソッド 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); }
/// <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; } }
private void OpenLogoWindow() { _logoWindow = OpenWindow <LogoWindow>(LogoWindowPrefab); _logoWindow.Close += HandleCloseLogo; }