Exemple #1
0
        /// <summary>Thread関数でスプラッシュ画面を表示する。</summary>
        private static void ShowSplashByThread()
        {
            // 副スレッド(スプラッシュ画面を生成したスレッド)

            // スプラッシュ画面を

            // ・作成
            Splash._splashForm = new Splash();

            // ・閉じるイベントハンドラを仕掛
            Splash._nextForm.Activated += new EventHandler(Splash.Login_Activated);

            // ・表示
            Application.Run(Splash._splashForm);
        }
Exemple #2
0
        /// <summary>
        /// ログイン画面がアクティブになった時、スプラッシュ画面を閉じる
        /// </summary>
        private static void Login_Activated(object sender, EventArgs e)
        {   
            // 主スレッド(スプラッシュ画面を生成していないスレッド)

            // なので、スプラッシュ画面を閉じるメソッドをInvoke
            if (Splash._splashForm != null && !Splash._splashForm.IsDisposed)
            {
                Splash._splashForm.Invoke(new MethodInvoker(Splash.CloseSplash));
            }

            // nullクリア
            Splash._splashForm = null;
            Splash._nextForm = null;
            Splash._thread = null;
        }
Exemple #3
0
        static void Main()
        {
            // configの初期化
            GetConfigParameter.InitConfiguration("appsettings.json");

            // 既定の処理
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);

            // UnhandledExceptionイベント・ハンドラを登録する
            Thread.GetDomain().UnhandledException += new
                                                     UnhandledExceptionEventHandler(Application_UnhandledException);

            // ThreadExceptionイベント・ハンドラを登録する
            Application.ThreadException += new
                                           ThreadExceptionEventHandler(Application_ThreadException);

            // スプラッシュ画面の表示
            Splash.ShowSplash(new Login());

            // <スピンロック>
            // SleepすればCPUオーバヘッドはほとんど無いが
            // Sleep時間を長く、ループ回数を短くする
            // ことでよりCPUオーバヘッドを軽減できる。

            for (int i = 0; i < 30; i++)
            {
                if (Splash.SpinLock)
                {
                    break; // 直ちに抜ける
                }

                Thread.Sleep(100);
            }

            // ThreadExceptionイベント・ハンドラを登録する
            Application.ThreadException += new
                                           ThreadExceptionEventHandler(Application_ThreadException);

            // 次の画面(ログイン画面)の表示
            Application.Run(Splash.NextForm);
            if (Program.FlagEnd)
            {
                return; // ログインしないで終わった場合
            }

            // ThreadExceptionイベント・ハンドラを登録する
            Application.ThreadException += new
                                           ThreadExceptionEventHandler(Application_ThreadException);

            // 初期化画面の表示
            Application.Run(new ByReturn());
            if (Program.FlagEnd)
            {
                return; // 初期化しないで終わった場合
            }

            // ThreadExceptionイベント・ハンドラを登録する
            Application.ThreadException += new
                                           ThreadExceptionEventHandler(Application_ThreadException);

            // 業務画面の表示(業務の開始)
            Application.Run(new Form0());
        }