wpf obserableCollection e thread Atualizações de thread de fundo: um guia de segurança do thread
wpf's obserableCollection
simplifica a ligação de dados, mas atualizá -lo dos threads de segundo plano requer manuseio cuidadoso da segurança do thread. Este artigo explica o problema e apresenta uma solução usando recursos .NET 4.5.
O desafio: Segurança do thread com ObservableCollection
modificando diretamente um ObservableCollection
de um thread trabalhador lança uma exceção, porque o WPF exige que o thread da interface do usuário lida com alterações nas coleções ligadas.
a solução: .net 4.5 sincronização
. Net 4.5 apresenta bindingoperations.enableCollectionSynchronization
, simplificando a sincronização do thread para obserCollection
. Este método, chamado do thread da interface do usuário, lida com dois aspectos cruciais:
ColeçãoChanged
eventos para ele. bloqueio cooperativo: uma chave para sucessão
while EnableCollectionSynchronization
fornece ajuda significativa, a manutenção da segurança do encadeamento requer cooperação. Os threads de segundo plano devem adquirir o mesmo bloqueio usado por enableCollectionSynchronization
antes de modificar o obserablecllection
. Isso garante acesso sincronizado.
etapas de implementação
Lock
ou um mecanismo de travamento personalizado pode ser usado. bindingoperations.enableCollectionSynchronization
no thread da interface do usuário, fornecendo a coleção e o mecanismo de travamento escolhido. obserablecllection
e solte -o depois. Seguindo essa abordagem de bloqueio cooperativo, você pode atualizar com segurança o seu ObservableCollection
dos threads de segundo plano, garantindo a segurança do encadeamento e ativando os dados suaves e em tempo real em seus aplicativos WPF.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3