2013-03-26 2 views
0

Я следующий код, который вызывает службу WCF асинхронно:закрытия WCF клиента в асинхронной операции

var client = new MyServiceClient(); 
Task.Factory.FromAsync(client.BeginDo, client.EndDo, request, null).ContinueWith(t => { 
    //process t.Result 
}); 

Что является лучшим способом удаления экземпляра клиента службы в этом случае?

ответ

1

Два варианта для рассмотрения. Оба должны быть размещены в начале блока продолжения.

1.

try 
{ 
    client.Close(); 
} 
catch (CommunicationException e) 
{ 
    client.Abort(); 
} 
catch (TimeoutException e) 
{ 
    client.Abort(); 
} 
catch (Exception e) 
{ 
    client.Abort(); 
    throw; 
} 

2.

if (client.State == CommunicationState.Faulted) 
    client.Abort(); 
else 
    client.Close(); 
Смежные вопросы