ホームページ >バックエンド開発 >C++ >バックグラウンド スレッドが終了する前にスプラッシュ スクリーンが閉じないようにするにはどうすればよいですか?

バックグラウンド スレッドが終了する前にスプラッシュ スクリーンが閉じないようにするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-25 08:31:08389ブラウズ

How Can I Prevent a Splash Screen from Closing Before a Background Thread Finishes?

.NET でのスプラッシュ画面の早期終了の防止

この記事では、バックグラウンド スレッドの処理が完了する前にスプラッシュ スクリーンが閉じるという一般的な問題に対処します。 .NET Framework の組み込みスプラッシュ スクリーン管理機能を活用して、堅牢なソリューションを実現します。

Windows フォーム アプリケーション ベースの活用

このアプローチでは、WindowsFormsApplicationBase クラスを利用してスプラッシュ画面のライフサイクルをエレガントに管理します。

  1. プロジェクトのセットアップ: 新しい Windows フォーム アプリケーション (.NET Framework 4 以降) から始めます。 Microsoft.VisualBasic.ApplicationServices への参照を追加します。

  2. スプラッシュ スクリーン フォーム: スプラッシュ スクリーンとして機能するフォーム (frmSplash) を作成します。

  3. Program.cs 変更: Program.cs 内に、MyApp を継承したクラス (WindowsFormsApplicationBase) を作成します。

  4. メソッドのオーバーライド: OnCreateSplashScreen メソッドと OnCreateMainForm メソッドのオーバーライド:

    • OnCreateSplashScreen: frmSplash をインスタンス化し、スプラッシュ画面として割り当てます。
    • OnCreateMainForm: ここで重要なバックグラウンド作業が行われます。 時間のかかる操作はここで実行してください。 これらの操作が完了した後でのみ、メイン フォーム (Form1) を作成して割り当てる必要があります。 これにより、スプラッシュ画面が自動的に閉じます。
  5. コード例 (Program.cs):

<code class="language-csharp">using System;
using System.Windows.Forms;
using Microsoft.VisualBasic.ApplicationServices;

namespace MyApplication {
    static class Program {
        [STAThread]
        static void Main(string[] args) {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            new MyApp().Run(args);
        }
    }

    class MyApp : WindowsFormsApplicationBase {
        protected override void OnCreateSplashScreen() {
            this.SplashScreen = new frmSplash();
        }

        protected override void OnCreateMainForm() {
            // Perform time-consuming tasks here...
            // Example: Simulate work with a delay
            System.Threading.Thread.Sleep(3000); 

            // Create the main form AFTER the tasks are complete
            this.MainForm = new Form1();
        }
    }
}</code>

この改訂されたアプローチにより、すべてのバックグラウンド プロセスが完了するまでスプラッシュ スクリーンが表示されたままになり、ユーザー エクスペリエンスが大幅に向上します。 System.Threading.Thread.Sleep(3000); を実際のバックグラウンド スレッド操作に置き換えることを忘れないでください。

以上がバックグラウンド スレッドが終了する前にスプラッシュ スクリーンが閉じないようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。