Question

Le Close méthode sur un ICommunicationObject peut lever deux types d'exceptions comme le souligne MSDN ici.Je comprends pourquoi le Close méthode peut lever ces exceptions, mais ce que je ne comprends pas, c'est pourquoi le Dispose La méthode sur un proxy de service appelle le Close méthode sans try autour de.N'est-ce pas votre Dispose méthode le seul endroit où vous voulez vous assurer de ne lancer aucune exception ?

Était-ce utile?

La solution

Cela semble être un modèle de conception courant dans le code .NET.Voici une citation de Lignes directrices pour la conception du cadre

Pensez à fournir la méthode Close(), en plus de Dispose(), si close est la terminologie standard dans le domaine.Ce faisant, il est important que vous rendiez l'implémentation Close identique à Dispose...

Voici une article de blog dans lequel vous pouvez trouver une solution de contournement à ce problème de conception System.ServiceModel.ClientBase

Autres conseils

Oui, Dispose est généralement l'un des endroits où vous souhaitez vous assurer que les exceptions ne sont pas levées.Cependant, sur la base de ce MSDN fil de discussion il y avait des raisons historiques à ce comportement.En tant que tel, le modèle recommandé est le paradigme try{Close}/catch{Abort}.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top