2014-06-08 6 views
9

Ich arbeite durch einige Tutorials Online lernen Caliburn.Micro zum ersten Mal. Einige der Lernprogramme verwenden die ältere Version 1.3.0, ich verwende die neuere Version 2.0.0.6, die das neueste Nuget-Paket war, das wahrscheinlich die Quelle dieser Diskrepanz ist:Caliburn.Micro IEventAggregator Veröffentlichen Methode fehlt eine Überladung

Beim Versuch, die folgende Nachricht zu veröffentlichen:

public void Red() 
{ 
_events.Publish(new ColorEvent(new SolidColorBrush(Colors.Red))); 
} 

Der Compiler gibt eine Fehlermeldung aus, dass die Überladung nicht gefunden wurde. Die einzige Überladung für Veröffentlichen, die verfügbar ist, hat die folgende Signatur: void Veröffentlichen (Objektnachricht, Action-Marshal)

Ich habe dies mit der unten gezeigten Hintergrund-Worker-Thread-Methode funktioniert, aber in meinem Fall scheint es wie Overkill. Wurde die Überladung einzelner Parameter wirklich von Caliburn.Micro entfernt?

Auch die Dokumentation ist hier: https://caliburnmicro.codeplex.com/wikipage?title=The%20Event%20Aggregator noch zeigen Beispiele mit der mehr grundlegenden, Einzelparameter Beispiel, wo Sie einfach eine Nachricht übergeben. Ist die Dokumentation unter diesem Link die neueste, die 2.0.0.6 korrekt beschreibt?

public void Red() 
{ 
_events.Publish(new ColorEvent(new SolidColorBrush(Colors.Red)), 
action => Task.Factory.StartNew(action)); 
} 

schließlich für Bonuspunkte:

Was ist dieser zweite Parameter gut für andere als die Nachricht auf einem Hintergrund-Thread zu veröffentlichen? Kann jemand ein anderes Beispiel geben, für was diese Überladung verwendet werden kann?

Antwort

11

In Caliburn Micro Version 2.0 führt auch die EventAggregator.Publish Methode eine Aktion aus, um das Ereignis zu marshalieren. Um das Verhalten vor 2.0 beizubehalten, sollten Sie stattdessen zur Methode EventAggregator.PublishOnUIThread wechseln. Informationen zu Inkompatibilitäten zwischen 1,5 und 2,0 finden Sie in den Migrationsanweisungen here.

Im Allgemeinen glaube ich, dass die Codeplex-Dokumentation ein wenig veraltet ist. Bitte beachten Sie die new dedicated web site für die meisten aktuellen documentation.

+0

Danke Anders ... – Sean

+0

kein EventAggregator.PublishOnUIThread im :( – oleksa

+0

2.0.2 ist ich es mit .Publish (Wert, neue Eventaggregator(). PublishOnUIThread) haben es geschafft, wo PublishOnUIThread ist eine Erweiterung Methode von Caliburn .Micro.EventAggregatorExtensions-Namespace – oleksa