线程不工作
本文关键字:工作 线程 | 更新日期: 2023-09-27 18:19:44
有人能告诉我为什么下面的代码不起作用吗?
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Thread t = new Thread(rtb2);
t.Start();
}
private void rtb2()
{
try
{
richTextBox1.Text = "1";
}
catch(InvalidOperationException ex)
{
MessageBox.Show("HI");
}
}
}
问题是您试图从后台线程修改Winforms UI元素。WinForms模型特别不允许这样做。UI元素只能从主线程进行修改。您需要使用Control.Invoke
才能将上下文返回到相应的线程。
private void rtb2() {
Action action = delegate {
richTextBox1.Text = "1";
};
try {
this.Invoke(action);
} catch(InvalidOperationException ex) {
MessageBox.Show("HI");
}
}