我在VS2010 C#中出現了一個非常奇怪的情況。我正在使用一個WCF PubSub框架與netTcpBinding上的回調。奇怪的是,在我的大型解決方案中的一個代碼塊中拋出了一個異常(我完全期望並正在編碼),但調試器正在停止顯示拋出異常,就好像沒有嘗試或捕獲。現在當我在.exe之外運行應用程序時,程序不會崩潰,異常也會相應處理。更奇怪的是,當我在一個新的空白解決方案中創建這個應用程序的輕量級版本時,異常在調試模式下被捕獲到VS中,但是當我再次將這個輕量級項目添加到原始大型項目時,異常未被捕獲。這裏是代碼塊,但我認爲這個問題與VS中的設置有關,這是我唯一的猜測。在VS 2010中嘗試/捕捉未捕獲的異常
基本上,當一個客戶端意外關閉和服務試圖發送到客戶端故障/訂戶漁獲會處理這,只是從列表中刪除用戶。 _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);
}
}
);
}
也許你不小心激活該設置嗎? http://stevesmithblog.com/blog/visual-studio-break-when-exception-thrown/ – Heinzi