Évitez les anomalies d'accès transversales: contrôle d'accès des différents threads
Dans l'application de la fenêtre Windows, l'opération croisée de transfert croisé se réfère à l'accès au contrôle de l'interface utilisateur à partir d'un autre thread. Cela conduira à "Operation transversale non valide: Contrôle de contrôle d'accès du thread à partir des threads du contrôle de la création". Pour résoudre ce problème, l'application ne doit accéder au contrôle de l'interface utilisateur que depuis la création de leurs threads.
Supposons que la tâche de traitement des données est déplacée vers le thread d'arrière-plan pour éviter la réponse de l'interface utilisateur terne. Cependant, l'accès au contrôle de l'interface utilisateur à partir du thread auxiliaire peut déclencher les anomalies ci-dessus.
Afin de résoudre ce problème, vous pouvez utiliser les propriétés
invokerequired pour déterminer si l'accès est à travers les threads. Si
Plan 1:
Si l'objectif est de récupérer les données utilisées pour l'interface utilisateur, vous pouvez utiliser les méthodes suivantes:Plan 2:
Si le traitement des données est terminé et que les résultats doivent être affichés, vous pouvez utiliser cette méthode:
<code class="language-csharp">UserControl1_LoadDataMethod() { string name = ""; if (textbox1.InvokeRequired) { textbox1.Invoke(new MethodInvoker(delegate { name = textbox1.Text; })); } if (name == "MyName") { // 加载“MyName”的数据 // 为以后的绑定填充全局变量 List<string> } }</code>
En observant ces technologies, les développeurs peuvent vous assurer que vous pouvez accéder au contrôle de l'interface utilisateur uniquement à partir du fil principal, empêchant ainsi l'émergence d'une opération de secours croisée invalide "et des anomalies et en maintenant la capacité de réponse 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!