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
250 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!

source:php.cn
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