L'application WPF jette la cause de "Les threads d'appel ne peuvent pas accéder à cet objet" Cause anormale
Les informations anormales apparaissant dans le code sont "l'appel ne peut pas accéder à cet objet, car un autre thread le possède". Cette erreur s'est produite lorsque vous essayez d'accéder à des éléments d'interface utilisateur à partir de fils non embaroupes.
Framework WPF restreint l'accès aux éléments d'interface utilisateur, et seuls les fils de création sont accessibles. Cela garantit la capacité de réponse de l'interface utilisateur et empêche les problèmes de thread. Dans cet exemple, le problème des problèmes est
.
txtSearchCountry.Text
Thread de travail d'arrière-plan et thread d'interface utilisateur
Le code semble utiliser des threads de travail d'arrière-plan pour effectuer des opérations asynchrones, telles que la récupération des données. Les threads de travail d'arrière-plan fonctionnent sur différents threads du thread d'interface utilisateur principal. Lors de la visite de l'élément d'interface utilisateur à partir de la ligne de travail de fond, un certain mécanisme doit être utilisé pour assurer la sécurité du fil.
Dispatcher et appel transversal
Pour accéder à l'élément d'interface utilisateur en toute sécurité à partir d'autres threads, vous devez utiliser la classe . fournit un moyen de faire la queue aux threads d'interface utilisateur.
Correction de code Dispatcher
Dispatcher
En utilisant , vous pouvez vous assurer que le code de est exécuté sur le fil d'interface utilisateur principal pour éviter la propriété. De plus, la vérification de la valeur vide a été simplifiée dans le code et
au lieu de. Enfin, utilisez GetGridData
pour spécifier l'objet Dispatcher à utiliser pour éviter une ambiguïté potentielle.
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!