wpf beobachtungsschuh und Hintergrund Thread Updates: Ein Thread -Sicherheitshandbuch
wpf's beobachtungsschärfe
vereinfacht die Datenbindung, aber die Aktualisierung von Hintergrund -Threads erfordert eine sorgfältige Handhabung der Thread -Sicherheit. Dieser Artikel erläutert das Problem und zeigt eine Lösung mit .net 4.5 -Funktionen.
Die Herausforderung: Thread -Sicherheit mit BeobachtungScollection
direkt ändern beobachtungsschärfe
aus einem Arbeiter -Thread löst eine Ausnahme aus, da WPF verlangt, dass UI -Thread Änderungen an gebundenen Sammlungen behandelt.
Die Lösung: .net 4.5 synchronization
. Net 4.5 führt bindingoperations.enableCollectionSynchronization
, vereinfachte Thread -Synchronisation für ObservableCollection
. Diese Methode, die aus dem UI -Thread genannt wird, behandelt zwei wichtige Aspekte:
collectionChanged
Ereignisse dazu. Kooperatives Sperren: Ein Schlüssel zu Erfolg
wobei EnableCollectionSynchronization
erhebliche Hilfe liefert, erfordert die Aufrechterhaltung der Sicherheit von Threads eine Zusammenarbeit. Hintergrund -Threads Must das gleiche Sperre erwerben, das von EnableCollectionSynchronization
verwendet wird, bevor die beobachtungsgemische
geändert wird. Dies stellt synchronisierten Zugriff sicher.
Implementierungsschritte
lock
Anweisung oder ein benutzerdefinierter Sperrmechanismus kann verwendet werden. bindingoperations.enableCollectionSynchronization
auf dem UI -Thread, bereitgestellt die Sammlung und Ihren ausgewählten Sperrmechanismus. beobachtungsschärfe
ändern und danach veröffentlichen. Wenn Sie diesem kooperativen Sperren von Ansatz folgen, können Sie Ihre beobachtungsschärfe
aus Hintergrund-Threads sicher aktualisieren, um die Sicherheit von Threads zu gewährleisten und eine reibungslose Echtzeitdatenanzeige in Ihren WPF-Anwendungen zu aktivieren.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3