Pregunta

El Close método en un ICommunicationObject puede generar dos tipos de excepciones como lo describe MSDN aquí.Entiendo por qué el Close El método puede generar esas excepciones, pero lo que no entiendo es por qué Dispose El método en un proxy de servicio llama al Close método sin try alrededor.¿No es tu Dispose ¿Método el único lugar donde desea asegurarse de no generar ninguna excepción?

¿Fue útil?

Solución

Parece ser un patrón de diseño común en el código .NET.Aquí hay una cita de Directrices de diseño del marco.

Considere proporcionar el método Close(), además de Dispose(), si close es la terminología estándar en el área.Al hacerlo, es importante que la implementación Cerrar sea idéntica a Disponer...

Aquí hay un entrada en el blog en el que puede encontrar una solución alternativa para este problema de diseño System.ServiceModel.ClientBase

Otros consejos

Sí, normalmente Dispose es uno de los lugares donde desea asegurarse de que no se generen excepciones.Sin embargo, según este MSDN hilo del foro Hubo algunas razones históricas para este comportamiento.Como tal, el patrón recomendado es el paradigma try{Close}/catch{Abort}.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top