Opération cross-thread invalide
Le message d'erreur « Opération cross-thread invalide » indique que le contrôle est accessible à partir d'un thread autre que celui qui a créé le contrôle. Cela se produit lorsque des opérations d’interface utilisateur sont effectuées sur un thread autre que celui qui possède le contrôle.
Solution
Pour résoudre ce problème, vous avez deux options :
1. Appelez les méthodes sur le fil de discussion de l'interface utilisateur
Créez le projet sur le thread enfant, puis appelez Control.Invoke() pour effectuer des opérations d'interface utilisateur sur le thread propriétaire :
<code class="language-csharp">System.Threading.Thread t = new System.Threading.Thread(() => { // 执行耗时操作 var items = CreateItems(); Invoke(new Action(() => { // 在 UI 线程上将项目添加到 ListView listView1.Items.AddRange(items); // 执行其他与 UI 相关的任务 })); });</code>
2. Utilisez BackgroundWorker
Vous pouvez également utiliser un BackgroundWorker, qui gère le threading en interne :
<code class="language-csharp">BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (s, e) => { /* 创建项目 */ }; bw.RunWorkerCompleted += (s, e) => { /* 将项目绑定到 UI 元素 */ }; bw.RunWorkerAsync();</code>
Veuillez noter que ne peut pas effectuer des opérations d'interface utilisateur sur un thread autre que le thread propriétaire. Par conséquent, assurez-vous d’utiliser l’une de ces méthodes pour garantir que votre interface utilisateur reste réactive et synchronisée.
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!