質問

メイン フォームを実行する直前に新しいスレッドを開始して、スプラッシュ フォームを表示しています。

このスレッドによって実行されるメソッドでは、以下のオプション 1 に示すように Application.Run を使用しています。これは正しい方法でしょうか、それとも Application.Run を 2 回呼び出したために問題が発生するのでしょうか?代替案はオプション 2 です。これも以下に示しますが、.ShowDialog() を呼び出してフォームを表示します。

スプラッシュ フォーム自体は、指定した時間が経過すると閉じられ、フォーム自体内で制御されます。両方のオプションが正常に機能しているように見えます。

そこで私の質問は次のとおりです。オプション 1 とオプション 2 のどちらが優先されますか?どちらか一方について具体的な理由を教えていただければ幸いです。

ありがとう。

メインの抜粋:

// Run splash screen thread.
Thread splash = new Thread(new ThreadStart(ShowSplash));
splash.Start();

// Run main application.
Application.Run(new MainForm());

スプラッシュ フォームを表示するオプション 1:

    static void ShowSplash()
    {
        Application.Run(new SplashForm());
    }

スプラッシュ フォームを表示するオプション 2:

    static void ShowSplash()
    {
        using (SplashForm splash = new SplashForm())
        {
            splash.ShowDialog();
        }
    }
役に立ちましたか?

解決

スプラッシュスクリーン待機しているスレッドがを終了するまで

ほとんどの定格の回答を参照してください

他のヒント

あなたはMainFormをとしてではなく、別のスレッドから同じMesageloopを使用しているため、オプション2おそらくトラブルに実行されます。

オプション1で結構です。

これは珍しい視点かもしれないと思いますが、スプラッシュ画面を使用せず、代わりに「ようこそページ」または「ヘルプ > 概要」画面に情報を表示することを検討しましたか?

これを行う理由はいくつかあります。

  1. マルチスレッドを使用しない限り、スプラッシュ スクリーンの上部にアラート/メッセージボックスがポップアップ表示されると、スプラッシュ スクリーンが適切に再描画されず、スプラッシュ スクリーンの利点が完全に無効になる可能性があります。

  2. 「プラグイン x、y、z がインストールされています」と表示されるスプラッシュ画面では、その情報がロードされるまでは実際にはわかりません。この情報が読み込まれるまでに、アプリの準備は完了しているため、スプラッシュ スクリーンを閉じるか、ユーザーの邪魔になることになります。

  3. 目を離してスプラッシュ画面を見逃してしまうと、あなたが教えてくれている情報を見逃してしまいます。「ライセンスは 3 日で期限切れになります」という情報がその情報の一部であり、今日が金曜日である場合、月曜日にはアプリが使用できないことに気づかないことを意味します。曖昧だけど見たことある。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top