Le message d'erreur donné, "Ce type de CollectionView ne prend pas en charge les modifications apportées à sa SourceCollection à partir d'un thread différent du thread Dispatcher", indique une tentative de modification d'une ObservableCollection à partir d'un thread non-UI. thread.
Comme expliqué dans le code fourni, la méthode Load() de ViewModel remplit le _matchObsCollection ObservableCollection à partir d'une liste d'objets GetMatchDetailsDC. Cependant, cette mise à jour est effectuée en dehors du thread de l'interface utilisateur.
Dans WPF, les éléments de l'interface utilisateur, tels que DataGrid, sont créés sur le thread de l'interface utilisateur et conservent un affinité de fil. Toute modification de ces éléments doit être effectuée à partir du thread de l'interface utilisateur pour garantir la sécurité du thread.
Pour résoudre ce problème, vous pouvez utiliser App.Current.Dispatcher.Invoke(( Méthode Action)delegate { ... }) pour appeler la mise à jour de la collection sur le thread de l'interface utilisateur :
matchList = proxy.GetMatch().ToList();
foreach (EfesBet.DataContract.GetMatchDetailsDC match in matchList)
{
App.Current.Dispatcher.Invoke((Action)delegate // Chargement de données asynchrones dans WPF
Bien que l'utilisation de méthodes asynchrones pour le chargement de données soit courante, il est important de prendre en compte la sécurité des threads lors de la manipulation d'éléments d'interface utilisateur à partir de threads non-UI. Assurez-vous toujours que toutes les mises à jour des éléments de l'interface utilisateur, telles que la modification d'un ObservableCollection, sont effectuées sur le thread de l'interface utilisateur pour éviter les erreurs liées au thread.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3