有人能告诉我为什么以下代码不起作用?
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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
问题是您尝试从后台线程修改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");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
870 次 |
| 最近记录: |