Maison > développement back-end > C++ > Comment mettre à jour une collection d'observable à partir d'un fil de travail dans .NET?

Comment mettre à jour une collection d'observable à partir d'un fil de travail dans .NET?

Mary-Kate Olsen
Libérer: 2025-01-26 22:36:12
original
311 Les gens l'ont consulté

How to Update an ObservableCollection from a Worker Thread in .NET?

mises à jour d'observable de fonction de filetage dans .NET

Travailler avec ObservableCollection objets et threads d'arrière-plan conduit souvent à des exceptions si des modifications sont tentées à l'extérieur du thread d'interface utilisateur. Cet article explique pourquoi et fournit une solution.

Le défi: nature unique

Les

ObservableCollection S sont intrinsèquement monomoroliques. Ils ne peuvent être modifiés que à partir du fil qui les a créés (généralement le fil d'interface utilisateur). Tenter des mises à jour d'un fil de travail entraîne une exception.

Solution pour .net 4.5 et ultérieure

.NET 4.5 et versions ultérieures proposent BindingOperations.EnableCollectionSynchronization pour l'accès à filetage. Cette méthode gère les événements de synchronisation et de répartition CollectionChanged au thread d'interface utilisateur.

Étapes d'implémentation:

  1. sur le thread UI: Appelez BindingOperations.EnableCollectionSynchronization(yourObservableCollection, new object()). Le deuxième argument est un objet de verrouillage; L'utilisation de new object() crée un verrou simple.

  2. dans le thread de l'emplois: Utilisez l'objet même Lock transmis à EnableCollectionSynchronization. Acquérir le verrou avant de modifier le ObservableCollection et le libérer par la suite. Cela garantit la sécurité des fils.

  3. Effectuez des mises à jour: apportez vos modifications au ObservableCollection pendant que la serrure est maintenue.

Cette approche exploite la synchronisation intégrée du cadre, fournissant une solution propre et efficace pour mettre à jour ObservableCollection s à partir des threads d'arrière-plan. N'oubliez pas de toujours libérer la serrure pour éviter les blocs de non-blocs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal