Вопрос

Тот Самый Close метод на ICommunicationObject может генерировать два типа исключений, как описано в MSDN здесь.Я понимаю, почему Close метод может генерировать эти исключения, но чего я не понимаю, так это почему Dispose метод на прокси-сервере службы вызывает Close метод без try вокруг него.Разве это не твой Dispose укажите единственное место, где вы хотите убедиться, что вы не создаете никаких исключений?

Это было полезно?

Решение

Похоже, это распространенный шаблон проектирования в коде .NET.Вот цитата из Руководящие принципы по разработке фреймворка

Рассмотрите возможность предоставления метода Close() в дополнение к методу Dispose(), если close является стандартной терминологией в данной области.При этом важно, чтобы вы сделали реализацию Close идентичной Dispose ...

Вот такой запись в блоге в котором вы можете найти обходной путь для этой системы.ServiceModel.Проблема проектирования клиентской базы

Другие советы

Да, обычно Dispose - это одно из мест, где вы хотите убедиться, что исключения не генерируются.Однако, основываясь на этом MSDN тема форума для такого поведения были некоторые исторические причины.Таким образом, рекомендуемым шаблоном является парадигма try{Close} / catch{Abort}.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top