Закрытие и удаление службы WCF - PullRequest
14 голосов
/ 23 августа 2008

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

Ответы [ 2 ]

9 голосов
/ 31 августа 2008

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

9 голосов
/ 23 августа 2008

Кажется, это обычный шаблон проектирования в .NET-коде. Вот цитата из Руководства по проектированию рамок

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...