У меня очень странное явление в VS2010 C #.Я использую платформу WCF PubSub с обратными вызовами через netTcpBinding.Странно, но в одном блоке кода в моем большом решении выдается исключение (что я полностью ожидаю и кодирую), но отладчик останавливается, показывая выбрасываемое исключение, как будто нет попытки или перехвата.Теперь, когда я запускаю приложение вне VS как просто .exe, программа не падает, и исключения обрабатываются соответствующим образом.Что еще более странно, когда я создал облегченную версию этого приложения в новом пустом решении, исключения отлавливаются в VS в режиме отладки, но когда я снова добавляю этот же облегченный проект в исходный большой проект, исключения не перехватываются,Вот блок кода, хотя я думаю, что проблема связана с настройками в VS для этого решения, это мое единственное предположение.
В основном, когда клиент неожиданно закрывается и служба пытается отправить всбойный клиент / подписчик, уловка справится с этим и просто удалит подписчика из списка.Список _subscribeers является статическим списком только для чтения.Я пытался сделать сервис синглтоном и не использовать статическое ключевое слово в списке, но, похоже, это не имеет значения.Я не могу заархивировать и опубликовать все решение, в котором оно находится по понятным причинам.
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);
}
}
);
}