ダイアログなしで.NET WinFormsアプリが突然終了する原因は何ですか?

StackOverflow https://stackoverflow.com/questions/201614

  •  03-07-2019
  •  | 
  •  

質問

WinFormsアプリケーションは、時々単独で終了することが報告されています。クラッシュエラーの送信ダイアログもWindowsのエラー送信ダイアログも表示されず、閉じて消えてしまいます。多くの場合、その人がafkでアプリケーションで何もしていませんでした。月に2〜3回程度の、まれにしか発生しないように思われます。再現ケースの取得を開始する場所や、これの追跡を開始する場所がわかりません。

C# .NET 2.0 報告されたケースはWin XPにあります

アイデアはありますか?

役に立ちましたか?

解決

無限再帰によるスタックオーバーフローは、アプリが警告なしに終了する大きな原因です。サイレント終了を引き起こす意図的な操作を行わない限り、未処理の例外(スタックオーバーフロー以外)は通常、アプリが終了する前に何らかのUIを表示します。スタックオーバーフローは、このルールの最も一般的な例外です(おっと、申し訳ありません)。

もちろん、アンマネージコードまたは安全ではないコードから、サイレント終了を引き起こす正しい方法でランタイムを混乱させることはほぼ確実に可能です。

インスツルメンテーションおよびWindowsイベントログの確認に関する提案も良好です。

他のヒント

例外により、アプリは「消失」します。イベントログをチェックして、何かあったかどうかを確認します。

タスクマネージャをチェックして、ウィンドウが消えてもプロセスがまだ存在するかどうかを確認します。 Explorerがクラッシュし、Alt-TabbedまたはSwitched-To(タスクマネージャーから)になるまでウィンドウを再描画できませんでした。

ユーザーがアプリを閉じていることを忘れないように、ユーザーの手に渡さないでください。ユーザーが開始したクロージャーをログに記録するために、アプリにいくつかのロギングロジックを配置することができます。次回は「消える」。ログエントリを確認できます。

FormClosingイベントにロジックを追加して、ユーザーが本当にやりたいことをユーザーに尋ねることができます。その後、終了イベントをキャンセルできます。この問題に気づき、それがロジックを実行しない場合、デバッガーで手を汚す必要があります。

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