Me he encontrado con lo que debe ser un problema común. Cuando tengo un evento que puede estar suscrito a varias clases diferentes, una excepción lanzada por una de estas clases matará a la cadena de devolución de llamada; como no sé a priori en qué orden se realiza la devolución de llamada, esto puede provocar cambios de estado impredecibles para algunas clases y no para otras.¿Cómo evito que las excepciones dañen mi cadena de delegados?
En la Biblia (CLR via C#, estoy usando C# 2.0) hay un breve párrafo sobre cómo usar MulticastDelegate.GetInvocationList
para evitar esto, pero nada más. Entonces mi pregunta es: ¿cuál es la mejor manera de lidiar con esto? ¿Tengo que usar MulticastDelegate.GetInvocationList
cada vez que tengo un evento? ¿O necesito incluir todos los métodos que se pueden llamar como parte de la cadena de delegados en algún tipo de mecanismo de reversión? ¿Por qué todas estas opciones son tan complicadas en comparación con el modelo simple de evento/delegado que es tan fácil de usar en C#? ¿Y cómo puedo usarlo de la manera más simple sin terminar con un estado corrupto?
Gracias!
nota respuesta a tu comentario –