0

重複の可能性:
アプリケーションがクラッシュしたときに致命的な例外の兆候はありません | NLog バージョン 2 | コンパクト フレームワーク 3.5

Nlog を使用して致命的な例外をログに記録する .Net Compact Framework 3.5 アプリケーションがあります。ほとんどの場合、ログは期待どおりに機能し、クラッシュする前に致命的な例外をログに記録します。ただし、エラー/例外の兆候を残さずにアプリケーションがクラッシュすることが時々観察されます。シナリオを詳しく説明しましょう -

  1. アプリケーションはいくつかのスレッドを作成します。すべてのスレッド (通常、スレッドプール、APM、タイマー) には、呼び出しスタックの先頭に追加された try-catch ブロックがあります。したがって、クラッシュする前に致命的な例外をログに記録します。

  2. メイン スレッドには、致命的な例外をコール スタックに記録するための「AppDomain.CurrentDomain.UnhandledException」があります。

  3. アプリケーションはサード パーティが管理する dll をロードし、Wnce dll で PInvoke を実行します。しかし、サード パーティの dll がクラッシュした場合 (または、クラッシュする新しいスレッドが作成された場合) は、少なくともログに ThreadAbortExceptions が表示され、終了する前にアプリケーションのスレッドによってログに記録されるはずです。

  4. この動作は散発的で、アプリケーションの起動後しばらくしてから発生することがあります。

  5. コードには Application.DoEvents はありません。

このようなクラッシュの考えられる理由は何ですか? ログに例外がまったくないのはなぜですか?

どんな助けでも大歓迎です。

4

0 に答える 0