Должен ли я проверить, если он уже закрыт, перед вызовом Close () в службе WCF? - PullRequest
3 голосов
/ 27 февраля 2009

Прежде чем я позвоню Close() в моей службе WCF, я должен проверить, не закрыта ли она еще?

т.е.

myWCFService.State != System.ServiceModel.CommunicationState.Closed

Мой код выглядит так:

MyServiceClient myWCFClient = null;

try
{
  myWCFClient = new .....();
}
catch
{
}
finally
{
   myWCFClient.Close();
}

Ответы [ 2 ]

2 голосов
/ 27 февраля 2009

Клиент WCF является одноразовым, поэтому , за исключением нескольких предостережений , вы можете использовать using:

using(MyClient client = new MyClient()) {
    client.DoStuff();
    // etc
}

Но есть большая проблема с этим; Dispose на клиенте WCF фактически выдает, если он неисправен (теряет исходное исключение). Есть хороший обходной путь, здесь , или я уже писал об этом здесь .

1 голос
/ 27 февраля 2009

Взгляните на этот вопрос: Как лучше всего обойтись для клиента WCF using проблема с блоком? Хотя это не слово в слово, что вы ищете, я думаю, что его примеры будут выручить вас.

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