2011-06-20 8 views
2

私はVS2010 C#で非常に奇妙な出来事があります。私はnetTcpBinding以上のコールバックでWCF PubSubフレームワークを使用しています。私の大規模なソリューション内の1つのコードブロックでは、不思議なことに例外がスローされています(私はまったく期待しています)が、デバッガは例外がスローされるのを止めています。今、私がVSの外部でアプリケーションを実行すると、プログラムがクラッシュせず、例外が適切に処理されます。私はこの新しいアプリを軽量なソリューションの中に作りましたが、例外はデバッグモード中にVSで捕捉されていましたが、元の大きなプロジェクトに同じ軽量プロジェクトを追加したときに例外は捕捉されません。ここではコードのブロックがありますが、問題はこのソリューションのVSの設定と関係していると思いますが、それは私の唯一の推測です。VS2010で例外をキャッチしようとしないでください

基本的に、クライアントが予期せず終了し、サービスが障害の発生したクライアント/サブスクライバに送信しようとすると、キャッチはこれを処理してリストからサブスクライバを削除します。 _subscribersのリストは静的な読み取り専用リストです。私はサービスをシングルトンにしようとしましたが、リストに静的キーワードを使用していませんが、違いはありません。明らかな理由から、これが存在するソリューション全体を圧縮して投稿することはできません。

public void UpdateData(Action<T> action) 
{ 
_subscribers.ForEach(subscriber => 
      { 
       var client = subscriber as ICommunicationObject; 
       try 
       { 
       if (client != null && client.State == CommunicationState.Opened) 
        action(subscriber); 
       else 
        Unsubscribe(subscriber); 
       } 
       catch 
       { 
       Unsubscribe(subscriber); 
       } 
      } 
); 
} 
+2

は、たぶん、あなたが誤って、この設定を有効に? – Heinzi

答えて

2

私はあなたのExceptionsの設定を調べます。私は、次のクリーナーロジックに置き換えることを検討します:それはここで解決できる問題を修正しました、上記

  try 
      { 
      if (client != null && client.State == CommunicationState.Opened) 
       action(subscriber); 

      } 
      finally 
      { 
      Unsubscribe(subscriber); 
      } 
+0

ありがとうございます、私はたぶん空のcatchステートメントの代わりにfinallyを使用しているはずです。 Heinziのリンクは問題を解決しましたが、そのオプションをいつ、いつ、どのように設定すればよいのか分かりませんが、それが問題でした。ありがとう! –