2010-07-22 8 views
1

Dans mon application, je me sers client.open et client.close pour ouvrir un canal proxy WCF, utilisez la méthode WCF et enfin fermer. Je fais ceci est plusieurs parties de mon application Windows Forms.client utilisant WCF

Cependant, je constate que client.close ne se ferme pas nécessairement la connexion immédiatement. Pourquoi est-ce? Dois-je utiliser client.Abort à la place?

Suis-je utiliser le client WCF de la bonne façon? c'est-à-dire clien.open -> appelle la méthode WCF -> client.close.

Merci pour toute aide à l'avance!

Subbu

Répondre

1

La méthode .Close() va essayer de fermer la connexion avec grâce, par exemple un appel en attente sera toujours terminé par le serveur, et seulement après que cela soit fait, la connexion est terminée. Utilisez-le dans la mesure du possible - c'est la manière douce et préférée de fermer une connexion client.

.Abort() larmes vraiment juste sur le canal de communication - Peu importe si un appel est en cours ou non. Il est l'ultime, la dernière trappe d'évacuation de la station, si .Close() a échoué.

En tant que meilleure pratique, j'enveloppait mon service appelle dans un bloc try...catch, quelque chose comme ceci:

try 
{ 
    myServiceClient.CallSomeMethod(); 
    myServiceClient.Close(); 
} 
catch(FaultException<SomeError>) 
{ 
    myServiceClient.Abort(); 
} 
// possibly other catch clauses, too - call .Abort() inside them 
catch(CommunicationException) 
{ 
    myServiceClient.Abort(); 
} 
+1

Merci. Cela me donne de bonnes indications. J'ai marqué votre réponse – Subbu