フォームを閉じるだけのキャンセルボタンを使用してプログラムを閉じると、アプリケーションエラーがスローされます。
エラーは次のとおりです:「アプリケーション appName.exe で重大なエラーが発生したため、シャットダウンする必要があります」
どうすれば修正を開始できますか? これはスローされた例外ではありません。他の情報は提供されません。何が原因で、どうすれば修正できますか?
フォームを閉じるだけのキャンセルボタンを使用してプログラムを閉じると、アプリケーションエラーがスローされます。
エラーは次のとおりです:「アプリケーション appName.exe で重大なエラーが発生したため、シャットダウンする必要があります」
どうすれば修正を開始できますか? これはスローされた例外ではありません。他の情報は提供されません。何が原因で、どうすれば修正できますか?
これがそれでした。私のアプリケーションには、すべてのアクションが発生するログインとメイン フォームの 2 つのフォームがあります。ログインフォームには 2 つのボタン (ログインとキャンセル) があります。ログイン ボタンは、ユーザーをログインさせ、ログイン フォームを閉じ、メイン フォームを開きます。キャンセルボタンはログインフォームを閉じるだけです。フォームを閉じるには、単純に this.Close() を使用しました。
ただし、次のようなことを行ってログインフォームを明示的に破棄する必要がありました。
frmLogin.Dispose();
frmLogin = null;
プログラムを終了する前に (私の Program.cs で)
それで、これで解決しました。ユーザーがログインするときと、ログインしないことを選択したときの両方の場合で、これが行われていることを確認する必要がありました。
重要な事実は、frmLogin がモーダルであるため、閉じたときに Dispose() が自動的に呼び出されないことです。
これは通常、マネージ コードがキャッチできないプロセス空間のシステム レベルの例外が原因で発生します。通常、ネイティブ コードに P/Invoke アウトし、不適切なポインター/パラメーターを指定すると、CLR によってキャッチされないネイティブ例外が発生します。
resharper をインストールしましたが、そのキャッシュが問題を引き起こしていました。キャッシュを削除したところ、うまくいきました。
いくつかの GUI コンポーネント、DLL、またはポート リソースを見てください。ポートが閉じられていない場合もあれば、GUIコンポーネントがある場合もあります(リストGUIコンポーネントを扱っています)
次のように、Program.cs の Application.Run(...) 行の周りに try/catch ブロックをスローします。
try
{
Application.Run(new Form1());
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
表示されているメッセージは、キャッチされていないスローされた例外があることを意味します。