2008-08-23 22 views
14

La méthode Close sur un ICommunicationObject peut renvoyer deux types d'exceptions en tant que contours MSDN: here. Je comprends pourquoi la méthode Close peut jeter ces exceptions, mais ce que je ne comprends pas, c'est pourquoi la méthode Dispose sur un proxy de service appelle la méthode Close sans l'essayer. Votre méthode Dispose n'est-elle pas le seul endroit où vous voulez vous assurer que vous ne jetez aucune exception?Fermeture et élimination d'un service WCF

Répondre

9

Il semble que ce soit un modèle de conception courant dans le code .NET. Voici une citation de Framework design guidelines

Envisager de fournir méthode Close(), en plus de la Dispose(), si proche est une terminologie normalisée dans la région. Ce faisant, il est important que vous faites la mise en œuvre identique à Fermer ... Éliminer

Voici un blog post où vous pouvez trouver solution à ce problème de conception System.ServiceModel.ClientBase

+0

le code utilisant WCF Proxy Generator dans VS 2008 lorsque j'ajoute Service Reference est un mauvais code car il ne s'agit pas de bonnes pratiques pour se débarrasser (fermer)? – Kiquenet

9

Oui, En général, Dispose est l'un des endroits où vous voulez vous assurer que les exceptions ne sont pas levées. Cependant, basé sur ce MSDN forum thread il y avait quelques raisons historiques pour ce comportement. En tant que tel, le modèle recommandé est le paradigme try {Close}/catch {Abort}.

+0

Je reçois http://social.microsoft.com/error/error404.aspx pour le lien. – Kiquenet