C#アプリケーションを終了すると、エラーを示すWindowsサウンドが表示されます。しかし、私がクローズプロセスを介してデバッグすると、私はすべての方法でプログラムクラスに戻ります...終了時のエラー
それは過去のApplication.Run(..)を取得し、静的void Main()関数を終了してからエラーが発生します。ノイズ以外
エラーを示すものは何もありません。私はどこから始めるべきか分からない!何か案は?
C#アプリケーションを終了すると、エラーを示すWindowsサウンドが表示されます。しかし、私がクローズプロセスを介してデバッグすると、私はすべての方法でプログラムクラスに戻ります...終了時のエラー
それは過去のApplication.Run(..)を取得し、静的void Main()関数を終了してからエラーが発生します。ノイズ以外
エラーを示すものは何もありません。私はどこから始めるべきか分からない!何か案は?
クリーンアップで何か問題が発生している可能性があります。
メインのすべてをラップしてtry/catchし、Application.Runの後にいくつかのコードを追加することで、コントロール中(メイン)に検出する可能性を高めてください。できるだけ多くのクリーンアップを行ってください。私が考えることのできるいくつかの事柄:
GC.Collect();
GC.WaitForPendingFinalizers();
Thread.Sleep(1000);
GC.Collect();
GC.WaitForPendingFinalizers();
少なくとも2回、おそらくもっと収集してください。同じ趣旨で、MainFormのOnClosingにいくつかのApplication.DoEvents()を追加します。
他のアプローチは暗闇の中で刺すようにコードに依存します。すべての静的フィールド/プロパティを検索して、nullとDisposableオブジェクトに設定することができます。
そして、すべてこのUnhandledExceptionイベントのフレドリックMörks提案との組み合わせで
。これは私の問題を解決しました。私が最終的にそれを取り除こうとしたとき、問題はもはや存在しませんでした。 時間がかかる場合は、コードの変更を元に戻って、どこに変更を加えて魔法のように問題を修正したかを確認します。あなたの素晴らしいアドバイスに感謝します。 – Matt
アプリを閉じたり、任意のアプリを閉じたときにそれが起こるない場合にのみ起こりますか?
私が最初に考えたのは、誰かが音スキームあなたの窓を変更して:)あなたを台無しに近いプログラム音を設定することになります。あなたはおそらくいくつかの情報を得るためにすることができ
これは私の最初の考えでした:)残念ながら、それはこの単一のアプリケーションにあります。 – Matt
ことの一つは、AppDomain.UnhandledExceptionとApplication.ThreadExceptionイベントのイベントリスナーをフックアップすることです。ロングショットですが、情報を提供するかもしれません。あなたはそれらを設定し、それらをメッセージボックスに任意の例外情報を表示持つようにメイン関数の先頭に以下を追加することができます。
static void Main()
{
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(delegate(object sender, UnhandledExceptionEventArgs e)
{
MessageBox.Show(e.ExceptionObject.ToString());
});
Application.ThreadException += new ThreadExceptionEventHandler(delegate(object sender, ThreadExceptionEventArgs e)
{
MessageBox.Show(e.Exception.ToString());
});
// run your app
}
素晴らしいアイデア - ありがとう!しかし、これらは空になりました:( – Matt
残念です。私は何かを思い付くでしょう... –
カスタムイベントを発生させ任意のコードを持っていますか?アプリがリアルタイムで終了しようとすると、これらのプロセスはまだ実行されていますか?
はあなたが近いの時点で実行することができ、任意のカスタム廃棄コードをお持ちですか?
あなたのプログラムはどのようなことをしていますか?たとえば、新しいスレッドを開始していますか? –
私はスレッドを開始していると思っていましたが、そのコードに触れていなくてもエラーが発生します。したがって、スレッドは要因ではありません。 – Matt
私はあなたがプログラムが閉じられている間にあなたが実行するコードを投稿するべきだと思います。 また、プログラムはどのように閉じていますか?閉じるボタンを使うことで? – bobbyalex