Kendalian silang silang tidak sah
Mesej ralat "Operasi rentas benang tidak sah" menunjukkan bahawa kawalan sedang diakses daripada utas selain daripada utas yang mencipta kawalan. Ini berlaku apabila operasi UI dilakukan pada utas selain daripada utas yang memiliki kawalan.
Penyelesaian
Untuk menyelesaikan isu ini, anda mempunyai dua pilihan:
1. Kaedah panggilan pada urutan UI
Buat projek pada urutan anak, kemudian panggil Control.Invoke() untuk melaksanakan operasi UI pada urutan pemilik:
<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. Gunakan BackgroundWorker
Sebagai alternatif, anda boleh menggunakan BackgroundWorker, yang mengendalikan threading secara dalaman:
<code class="language-csharp">BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += (s, e) => { /* 创建项目 */ }; bw.RunWorkerCompleted += (s, e) => { /* 将项目绑定到 UI 元素 */ }; bw.RunWorkerAsync();</code>
Sila ambil perhatian bahawa tidak boleh melaksanakan operasi UI pada urutan selain daripada urutan pemilik. Oleh itu, pastikan anda menggunakan salah satu kaedah ini untuk memastikan UI anda kekal responsif dan segerak.
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Operasi lintasan benang tidak sah' dalam Aplikasi Anda?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!