A mensagem de erro fornecida, "Este tipo de CollectionView não suporta alterações em seu SourceCollection de um thread diferente do thread do Dispatcher", indica uma tentativa de modificar um ObservableCollection de um thread não UI.
Conforme explicado no código fornecido, o Load( do ViewModel ) preenche o _matchObsCollection ObservableCollection de uma lista de objetos GetMatchDetailsDC. No entanto, esta atualização é realizada fora do thread da UI.
No WPF, os elementos da UI, como o DataGrid, são criados no thread da UI e mantêm um afinidade do fio. Quaisquer modificações nesses elementos devem ser realizadas no thread da UI para garantir a segurança do thread.
Para resolver esse problema, você pode usar o método App.Current.Dispatcher.Invoke(( Action)delegate { ... }) método para invocar a atualização da coleção no thread da UI:
matchList = proxy.GetMatch().ToList();
foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
{
App.Current.Dispatcher.Invoke((Action)delegate // Carregamento assíncrono de dados no WPF
Embora o uso de métodos assíncronos para carregamento de dados seja comum, é importante considerar a segurança do thread ao manipular elementos de UI de threads que não são de UI. Sempre certifique-se de que quaisquer atualizações nos elementos da UI, como a modificação de um ObservableCollection, sejam executadas no thread da UI para evitar erros relacionados ao thread.
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