我在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