3

実行時間の長いクエリを時々実行する WCF アプリケーションがあります。ソケットでタイムアウトが発生したことを理解し、後でサーバーを再ポーリングして回答を取得するための手順を実行するコードをクライアント側に作成しました。システムは、TimeoutException が発生する直前に、SocketException を含む多数の初回例外をスローします。以前は、初回例外を見つけて処理するまで、アプリの速度が大幅に低下していました。

これらの最初の例外を取り除きたいので、SocketException を処理する try-catch ブロックを作成し、VS2010 で例外をオンにして、コードを再実行しました。実行すると、SocketException が発生したことがデバッガーに表示されましたが、catch ブロックには入力されませんでした。(下記参照)

ここに画像の説明を入力

C# SocketException がキャッチされないなど、同様の投稿が多数見つかりましたが、例外をキャッチする方法や、それについて心配する必要があるかどうかについての回答は見つかりませんでした。

だから私の質問は:

1) これらの最初のチャンスの例外について心配する必要がありますか?

2) もしそうなら、どうすればシステムにそれらを捕まえさせることができますか?

4

2 に答える 2

2

呼び出された AppDomain.FirstChanceException イベントにアタッチできるイベントがあります

これはあなたがそれに接続する方法です:

  AppDomain.CurrentDomain.FirstChanceException += FirstChanceHandler;

これは、アプリケーションが実行されているアプリ ドメインにあります。ここにドキュメントがあります。 http://msdn.microsoft.com/en-us/library/system.appdomain.firstchanceexception.aspx

于 2012-05-23T12:48:17.013 に答える
2

最初のチャンスの例外は、既にキャッチされている例外がスローされます。

つまり、最初のチャンスの例外をキャッチすることは不可能です。

また、それらについて心配する必要はありません(通常)。

于 2012-05-23T12:48:24.820 に答える