Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengemas kini C# TextBox dengan Selamat daripada Thread Berasingan?
Mengemas kini TextBox daripada Thread Berasingan dalam C#
Dalam aplikasi Windows Forms, adalah penting untuk mengelak daripada mengakses elemen UI daripada utas bukan UI . Apabila cuba memanipulasi TextBox daripada utas yang berasingan, anda mungkin menghadapi pengecualian "Jenis operasi ini tidak sah pada utas ini". Untuk menangani perkara ini, anda perlu mengendalikan komunikasi silang benang dengan betul.
Untuk mengemas kini TextBox daripada urutan yang berasingan, anda harus mencipta kaedah pada borang utama anda yang menyemak sifat InvokeRequired bagi kelas Kawalan. Jika InvokeRequired adalah benar, ini bermakna panggilan dibuat daripada urutan bukan UI dan anda perlu menggunakan kaedah Invoke untuk menyusun panggilan ke urutan UI.
Sebagai contoh, pertimbangkan coretan kod berikut :
public partial class Form1 : Form { public Form1() { InitializeComponent(); new Thread(SampleFunction).Start(); } public void AppendTextBox(string value) { if (InvokeRequired) { this.Invoke(new Action<string>(AppendTextBox), new object[] { value }); return; } ActiveForm.Text += value; } void SampleFunction() { // Gets executed on a separate thread for (int i = 0; i < 5; i++) { AppendTextBox("hi. "); Thread.Sleep(1000); } } }
Dalam contoh ini, kaedah AppendTextBox menyemak bendera InvokeRequired dan, jika perlu, menggunakan Jemput untuk menyusun panggilan ke urutan UI. Dalam kaedah SampleFunction, kaedah AppendTextBox boleh dipanggil dengan selamat dari benang berasingan tanpa menyebabkan pengecualian. Pendekatan ini membolehkan anda mengemas kini elemen UI daripada urutan bukan UI sambil mengekalkan keselamatan urutan.
Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini C# TextBox dengan Selamat daripada Thread Berasingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!