2013-03-26 2 views
0

J'ai le code suivant, qui invoque le service WCF de manière asynchrone:fermeture client WCF en mode async

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

Quelle est la meilleure façon de disposer le service client par exemple dans ce cas?

Répondre

1

Deux variantes à prendre en compte. Les deux devraient être placés au début du bloc de continuation.

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(); 
Questions connexes