Laden...

WPF mit MVVM - Frage zu Workerthreads

Erstellt von daTom vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.062 Views
D
daTom Themenstarter:in
41 Beiträge seit 2009
vor 11 Jahren
WPF mit MVVM - Frage zu Workerthreads

Hallo zusammen,

seit neuestem darf ich mich mit WPF beschäftigen. Ich bin also noch Anfänger in diesen Sachen.

Ich habe hier eine Beispiel Applikation mit WPF und MVVM erstellt.
Es kann passieren, dass die gebundenen Properties im ViewModel von einem WorkerThread aktualisiert werden (z.B. Push-Daten von einem Webservice)

Nun meine Frage:
Kann es sein, dass in dieser Konstellation (DataContext, MVVM, Binding) das Marshalling in den UI Thread vom System selber übernommen wird?

Ich habe bei mir kein explizites Marhsalling in den UI Thread eingebaut (eigentlich habe ich das nur vergessen). Die typischen Exceptions (wie ich sie aus Winform Anwendungen kenne) bleiben allerdings aus.

Leider finde ich in der Dokumentation dazu nichts.

Kann mir hier vielleicht jemand etwas zu sagen?

B
387 Beiträge seit 2005
vor 11 Jahren

Hi daTom,

meines wissens muss man sich schon darum kümmern, dass zum Beispiel PropertyChanged im UI-Thread aufgerufen wird - zumminderst kümmere ich mich immer drum.

Was ich mir aber vortellen kann: WCF und auch andere Technologien verwenden oft standardmäßig schon das aktuelle SynchronizationContext für asynchrone CallBack-aufrufe. Würde also heißen, dass sich das bei dir aufgrund der verwendeten Technologie erledigt hat. Man kann es aber nicht genau sagen, dazu müsste man den Code angucken. Oder du Debugst mal an der Stelle rein, an der die GUI aktualisiert wird bzw. das PropertyChanged aufgerufen wird. Dann siehst du auch, von welchem Thread du da eigentlich kommst.

Gruß
Roland

D
daTom Themenstarter:in
41 Beiträge seit 2009
vor 11 Jahren

Hi,

dazu habe ich gerade bei Stackoverflow etwas gefunden:

Does WPF databinding marshall changes to the UI Thread?

Dort wird in der Antwort meine Vermutung gestützt. Aber leider gibt es hier auch keinen Hinweis auf eine offizielle Doku.

Z
403 Beiträge seit 2007
vor 11 Jahren

Hallo daTom,

bei INotifiyPropertyChanged kümmert sich das WPF Framework darum.

Hier noch ein Stackoverflow (Is Dispatcher not required in MVVM patern with WPF?) Beitrag für dich.

Bei Änderungen einer ObservableCollection<T> ist das erst ab .Net 4.5 der Fall.

André