Ich arbeite mich durch verschiedene Open-Source-Projekte, um ein Gefühl dafür zu bekommen, wie Menschen das gleiche Problem auf unterschiedliche Weise angehen. Diesmal sind es Event-Aggregatoren, speziell Caliburn.Micros.Versuchen zu verstehen, wie dies auf dem UI-Thread aufgerufen wird
Ich bemerke, dass Rob sagte, dass, wenn kein Thread geliefert wird, der EA zum UI-Thread marshale. Die Linie spezifisch ist:
public static Action<System.Action>
DefaultPublicationThreadMarshaller = action => action();
und dann weiter auf:
marshal(() =>
{
*SNIP*
});
Was ich nicht verstehe sein, wie Sie das sagen kann, wird auf dem UI-Thread aufgerufen werden, werden alle Aktionen auf der angerufene UI-Thread, es sei denn, Sie geben einen nicht an? (Sie können angeben, welche Aktion btw genannt wird, die Zeile oben ist nur dann, wenn keine Aktion angegeben wird).
Es gibt nichts, was dazu führen könnte, dass dies im UI-Thread aufgerufen wird. Der 'DefaultPublicationThreadMarshaller' ruft einfach die Aktion im aktuell laufenden Thread auf. Wo finden Sie die Erwähnung des UI-Threads genau? – Groo
Es gibt kein solches automatisches Verhalten. Vielleicht ist es so, dass 'marshal()' entworfen und implementiert wird. –