Frage

In meiner zusammengesetzten WPF-Anwendung habe ich ein Ereignis, das veröffentlicht wird, wenn der Benutzer auf eine Kontrolle doppelklickt. Module abonnieren das Ereignis und führen bei Bedarf eine Aktion aus.

Dieses Ereignis scheint zufällig aufzuhören. Manchmal kann ich, wenn ich die Anwendung ausführe, das Ereignis ohne Probleme auslösen. Manchmal kann ich es nur einige Male auslösen, bevor die Module das Ereignis aufhören.

Wenn ich im Debugger schaue, der Cal EventAggregator hat immer noch die Veranstaltung, aber die Veranstaltung hat keine Abonnements. Wie kann EventAggregator Abonnements verlieren?

War es hilfreich?

Lösung

Es stellte sich heraus, dass es der Müllsammler war, der die Abonnements entfernt hat. Ich muss mich über die Interna nachlesen, aber als ich ersetzt habe

this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(SomeFunction);

mit

this.mEventAggregator.GetEvent<SomeEvent>().Subscribe(
    SomeFunction, ThreadOption.UIThread, true);

Es fing an zu arbeiten. Die UI -Thread -Parameter waren nicht mein Problem, aber für andere kann es wichtig sein, sicherzustellen, dass Sie das Ereignis auch auf dem richtigen Thread abwickeln.

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