2012-01-11 10 views
2

DllにはC#のエントリポイントがありません。したがって、これらのdllはexeで参照され、すべてがキャッチしようとしているので、グローバル例外処理のコードを置く必要があります。クラッシュダンプを作成しようとしていることを確認してください。誰もがそれを行うための実現可能な解決策であると示唆することができますか、他の何かを行う必要があります。C#のDLLでグローバル例外処理を行うには?

ありがとうございました。

+3

はい、コードが実際に実行されている実行可能ファイルに例外処理コードを入れてください。 –

+0

私たちはapplication.ThreadExceptionでそれを試してみました。これはprogram.csのexeのメインでもそれには触れていませんが、dllのエラーのデフォルトのドットネットウィンドウが表示され、エラーを無視して続行するように求められます。 – Ershad

+0

'Application.ThreadException'については、[the documentation](http://msdn.microsoft.com/en-us/library/system.windows.forms.application.threadexception.aspx)を必ず読んで従ってください。デバッガをアタッチしてアプリケーションを実行すると、デフォルトの例外処理についていくつかの変更が行われます。 –

答えて

1

Codyは、例外を処理するためにtry catchブロックにそのDLLのすべての呼び出しを囲む必要があると述べました。あなたの文はちょっと混乱しています。あなたがすでにtry catchブロックを使用していると仮定しています。その場合、グローバル例外を処理して例外をスローすること自体がexeではないことを確認することができます。

たとえば、Win Formアプリケーションでは、グローバル例外をキャッチするためにApplication.ThreadExceptionを処理できます。 AppDomain.Unhandledイベントでも試すことができます

+0

私はそれを試みましたが、試しにキャッチしてアプリケーションをクラッシュさせることによって捕捉されないいくつかの例外があります。捕まえられればそれを処理していますが、捕まえなければ問題です。 – Ershad

+0

おそらく、アンマネージコードで例外が発生している可能性があります。これにより、例外によってシステムがクラッシュする可能性があります。 –