Может ли вызов Abort () на прокси IClientChannel вызвать исключение? - PullRequest
5 голосов
/ 13 сентября 2009

На основании документации и статей рекомендуется вызывать Abort () на клиентском прокси-сервере в случае непредвиденного исключения / сбоя. Смотрите следующее (упрощенно):

MyServiceClient proxy = null;
try {
    proxy = new MyServiceClient();
    proxy.DoSomething();
    proxy.Close();
} catch (Exception ex) {
    if (proxy != null)
        proxy.Abort();
}

Существует ли какая-либо возможность вызова метода Abort () для самого исключения? Должен ли вызов Abort () быть в пределах своего собственного try / catch?

1 Ответ

4 голосов
/ 13 сентября 2009

Нет, прерывание не будет завершено (но .Close () или .Dispose () могут). Вызов .Abort () - это «кувалдой» подход к прекращению канала - он просто разрывается, независимо от текущей обработки сообщений.

Используйте его только осторожно - например, в исключительной ситуации при вызове .Close () не удалось. Это реальная цель и правильное использование.

Марк

...