.NET でのスプラッシュ画面の早期終了の防止
この記事では、バックグラウンド スレッドの処理が完了する前にスプラッシュ スクリーンが閉じるという一般的な問題に対処します。 .NET Framework の組み込みスプラッシュ スクリーン管理機能を活用して、堅牢なソリューションを実現します。
Windows フォーム アプリケーション ベースの活用
このアプローチでは、WindowsFormsApplicationBase
クラスを利用してスプラッシュ画面のライフサイクルをエレガントに管理します。
プロジェクトのセットアップ: 新しい Windows フォーム アプリケーション (.NET Framework 4 以降) から始めます。 Microsoft.VisualBasic.ApplicationServices
への参照を追加します。
スプラッシュ スクリーン フォーム: スプラッシュ スクリーンとして機能するフォーム (frmSplash
) を作成します。
Program.cs 変更: Program.cs
内に、MyApp
を継承したクラス (WindowsFormsApplicationBase
) を作成します。
メソッドのオーバーライド: OnCreateSplashScreen
メソッドと OnCreateMainForm
メソッドのオーバーライド:
OnCreateSplashScreen
: frmSplash
をインスタンス化し、スプラッシュ画面として割り当てます。OnCreateMainForm
: ここで重要なバックグラウンド作業が行われます。 時間のかかる操作はここで実行してください。 これらの操作が完了した後でのみ、メイン フォーム (Form1
) を作成して割り当てる必要があります。 これにより、スプラッシュ画面が自動的に閉じます。コード例 (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 サイトの他の関連記事を参照してください。