Thread : Cross-thread operation not valid

Nguyên nhân : do thread ta vừa tạo can thiệp đến các thread khác không hợp lệ .

Vd : Khi ta tạo 1 thread để truy cập thêm vào 1 object(string) cho một listBox . Khi đó , thread này xảy ra xung đột đối với thread của Form .

Cách xử lí : Ta cần sử dụng đến Control.Invoke(Method) để có thể xử lý vấn đề này .

vd :

Giả sử Form1 của ta có các control : button1 , listBox1 ; một hàm AddItem để add 1 item mới cho listBox1 .

void AddItem()

{

listBox1.Items.Add(“a”);

}

button1 có hàm Click như sau :

private void button1_Click(object sender, EventArgs e)

{

Thread thread = new Thread(new ThreadStart(AddItem));

thread.Start();

}

Đối với đoạn code như trên ta sẽ bị báo lỗi thread truy cập không hợp lệ : cross thread operation not valid . Vì thế ta cần sử dụng Controls.Invoke như sau :

private void button1_Click(object sender, EventArgs e)

{

Thread thread = new Thread(new ThreadStart(AddItem));

if(listBox1.InvokeRequired)

listBox1.Invoke(AddItem);

thread.Start();

}

Bình luận về bài viết này