C# WinForm 错误:'线程间操作无效: 从不是创建控件“textBox1”的线程访问它。' 的解决方法
这个错误是因为在不同的线程中尝试访问UI控件(如'textBox1'),而UI控件只能在创建它们的线程中访问。
要解决这个问题,可以使用Invoke或BeginInvoke方法在控件的创建线程中执行代码。例如:
private void UpdateTextBox(string text)
{
if (textBox1.InvokeRequired)
{
textBox1.BeginInvoke(new Action(() => textBox1.Text = text));
}
else
{
textBox1.Text = text;
}
}
在这个例子中,UpdateTextBox方法检查当前线程是否是'textBox1'的创建线程(即UI线程),如果不是,则使用BeginInvoke方法将代码调度到UI线程执行。如果是,则直接更新'textBox1'的Text属性。
需要注意的是,使用Invoke或BeginInvoke方法可能会对性能产生一定的影响,因此应该在必要时使用。
原文地址: https://www.cveoy.top/t/topic/mFBQ 著作权归作者所有。请勿转载和采集!