Ich bin auf das gestoßen, was ein allgemeines Problem sein muss. Wenn ich ein Ereignis habe, das von mehreren verschiedenen Klassen abonniert werden kann, führt eine Ausnahme, die von einer dieser Klassen ausgelöst wird, zum Abbruch der Rückrufkette. Da ich a priori nicht weiß, in welcher Reihenfolge der Callback ausgeführt wird, kann dies zu unvorhersehbaren Statusänderungen für einige Klassen und nicht für andere führen.Wie stoppe ich Ausnahmen, die meine Delegiertenkette zerstören?
In der Bibel (CLR via C#, verwende ich C# 2.0) gibt es einen kurzen Absatz über MulticastDelegate.GetInvocationList
, um dies zu umgehen, aber nichts mehr. Also meine Frage ist: Was ist der beste Weg, damit umzugehen? Muss ich jedes Mal, wenn ich eine Veranstaltung habe, MulticastDelegate.GetInvocationList
benutzen? Oder muss ich alle Methoden einschließen, die als Teil der Delegiertenkette in einer Art Rollback-Mechanismus aufgerufen werden können? Warum sind all diese Optionen im Vergleich zum einfachen Event/Delegate-Modell, das in C# so einfach zu verwenden ist, so kompliziert? Und wie kann ich den einfachen Weg benutzen, ohne mit einem beschädigten Zustand zu enden?
Danke!
note antworten Sie auf Ihren Kommentar –