这个错误是因为在不同的线程中尝试访问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方法可能会对性能产生一定的影响,因此应该在必要时使用。

C# WinForm 错误:'线程间操作无效: 从不是创建控件“textBox1”的线程访问它。' 的解决方法

原文地址: https://www.cveoy.top/t/topic/mFBQ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录