Frage

Der Close Methode auf einem ICommunicationObject kann zwei Arten von Ausnahmen auslösen, wie in MSDN beschrieben Hier.Ich verstehe, warum das Close Die Methode kann diese Ausnahmen auslösen, aber ich verstehe nicht, warum das so ist Dispose Die Methode auf einem Dienst-Proxy ruft die auf Close Methode ohne a try um es herum.Ist das nicht deins? Dispose Methode an der einzigen Stelle, an der Sie sicherstellen möchten, dass Sie keine Ausnahmen auslösen?

War es hilfreich?

Lösung

Es scheint ein gängiges Entwurfsmuster im .NET-Code zu sein.Hier ist ein Zitat von Richtlinien zur Rahmengestaltung

Erwägen Sie die Bereitstellung der Methode Close() zusätzlich zu Dispose(), wenn „Close“ in diesem Bereich die Standardterminologie ist.Dabei ist es wichtig, dass Sie die Close-Implementierung mit der Dispose-Implementierung identisch machen ...

Hier ist ein Blogeintrag Hier finden Sie eine Problemumgehung für dieses System.ServiceModel.ClientBase-Entwurfsproblem

Andere Tipps

Ja, normalerweise ist Dispose einer der Orte, an denen Sie sicherstellen möchten, dass keine Ausnahmen ausgelöst werden.Basierend jedoch auf dieser MSDN Forenthread Es gab einige historische Gründe für dieses Verhalten.Daher ist das empfohlene Muster das try{Close}/catch{Abort}-Paradigma.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top