0

プロジェクトからプロジェクトにコピーされるボイラープレート コードの量を減らすために作成した dll ライブラリがあります。RPC を介して機械への接続を維持するために、dll で実行されているタイマーがあります。プロジェクトをデバッグして RPC 接続を切断すると、コードが dll ライブラリから切断イベントを適切にトスし、メイン フォームがイベントをキャッチして適切に処理します。

次に、リリース用にビルドします。RPC 接続を切断すると、未処理の例外がライブラリからスローされますが、これは明らかに他の場所ではキャッチされません。

奇妙な部分は、例外をスローしているコードがタイマーにあり、呼び出しがすべて try/catch ブロックにラップされ、catch ブロックが例外を飲み込み、他のクリーンアップ作業を行うことです。

デバッグモードではすべてがうまくいく方法がわかりませんが、リリースではそうではありません。その部分は私には意味がありません。例外オブジェクトを調べて、処理されたプロパティを設定しようとしましたが、利用できません。これは正常な動作ですか?

私は最近、自分のプロジェクトで多数のライブラリを利用して、ソリューションをより整理し、簡単に理解できるようにし始めました。うまくいけば、これは私が考慮していなかったライブラリの問題ではありません。

4

1 に答える 1

2

リリースモードのTry-Catchでキャッチされない例外の種類がいくつかあります。たとえば、別のスレッドで発生する例外です。メインフォームでApplication.ThreadExceptionイベントを処理してみてください。

Application.CurrentDomain.UnhandledExceptionを処理して、未処理のすべての例外が確実にキャッチされるようにすることもできます。

于 2012-04-11T15:16:13.040 に答える