Maison >développement back-end >C++ >Comment mettre à jour en toute sécurité une ObservableCollection à partir d'un thread de travail dans .NET ?
ObservableCollection
à partir des fils de discussion en arrière-plan dans .NETModifier directement un ObservableCollection
à partir d'un thread de travail dans .NET conduit souvent à des exceptions. C'est parce que ObservableCollection
n'est pas thread-safe ; plusieurs threads y accédant simultanément peuvent provoquer un comportement imprévisible.
.NET 4.5 et les versions ultérieures offrent une solution pratique utilisant BindingOperations.EnableCollectionSynchronization
. Cette méthode simplifie la synchronisation des threads pour les mises à jour de l'interface utilisateur :
BindingOperations.EnableCollectionSynchronization(myCollection);
Cette seule ligne réalise :
ObservableCollection
( myCollection
) au thread de l'interface utilisateur, garantissant que les événements CollectionChanged
sont traités sur le thread de l'interface utilisateur.Bien que BindingOperations.EnableCollectionSynchronization
gère la synchronisation des threads de l'interface utilisateur, rappelez-vous que ObservableCollection
reste intrinsèquement non thread-safe. Pour une sécurité robuste des threads, utilisez toujours un verrou lorsque vous modifiez directement la collection à partir des threads d'arrière-plan :
<code class="language-csharp">lock (myCollection) { // Modify myCollection here (e.g., Add, Remove, etc.) }</code>
En combinant BindingOperations.EnableCollectionSynchronization
avec un verrouillage approprié, vous pouvez mettre à jour votre ObservableCollection
de manière sûre et efficace à partir des threads de travail sans compromettre l'intégrité des threads de l'interface utilisateur.
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!