ホームページ > バックエンド開発 > C++ > マルチフォームWindowsアプリケーションでフォームを閉じるときに、予期しないアプリケーション終了を防ぐにはどうすればよいですか?

マルチフォームWindowsアプリケーションでフォームを閉じるときに、予期しないアプリケーション終了を防ぐにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-29 10:11:08
オリジナル
976 人が閲覧しました

How Can I Prevent Unexpected Application Termination When Closing Forms in a Multi-Form Windows Application?

マルチフォームWindowsアプリケーションでのフォームクロージャーの管理

堅牢なマルチフォームWindowsアプリケーションの開発には、早期のアプリケーション終了または長引くプロセスを避けるために、フォーム閉鎖を慎重に管理する必要があります。 一般的な問題には、非メインフォームが閉じたときにアプリケーション全体がシャットダウンするか、目に見えるフォームがすべて閉じた後でもアクティブなままであるアプリケーションが含まれます。

単に

Show()を使用してフォームの可視性を管理することは不十分ですが、不十分です。 他の人を表示しながらメインフォームを隠すと、目に見えるフォームがすべて閉じていても、アプリケーションが無期限に実行されます。 Hide()ソリューションは、アプリケーションのライフサイクルを管理する

ファイルを変更することにあります。 デフォルトのコードは、多くの場合、メインフォームの閉鎖時にアプリケーションを終了します。 すべてのフォームが閉じられている場合にのみ適切な終了を確保するには、次のように

Program.csメソッドを調整します。 Program.cs Mainこの強化されたコードは、

イベントハンドラーをメインフォームに添付します。フォームが閉じると、ハンドラーはそれ自体を切り離し、
<code class="language-csharp">    [STAThread]
    static void Main() {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var main = new Form1();
        main.FormClosed += new FormClosedEventHandler(FormClosed);
        main.Show();
        Application.Run();
    }

    static void FormClosed(object sender, FormClosedEventArgs e) {
        ((Form)sender).FormClosed -= FormClosed;
        if (Application.OpenForms.Count == 0) Application.ExitThread();
        else Application.OpenForms[0].FormClosed += FormClosed;
    }</code>
ログイン後にコピー
コレクションをチェックします。空の場合(フォームが残っていない)、

はアプリケーションを優雅に終了します。 それ以外の場合は、ハンドラーを次のオープンフォームに再び取り付け、複数のフォーム閉鎖にわたって適切な管理を確保します。 FormClosedこのアプローチは、すべてのフォームが閉じられた後にのみマルチフォームアプリケーションがきれいに終了することを保証し、予期しない動作を防ぎ、アプリケーションの安定性を改善します。

以上がマルチフォームWindowsアプリケーションでフォームを閉じるときに、予期しないアプリケーション終了を防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート