您可以使用以下方法将文本框的值设置为另一个线程中的值,而不使用 BeginInvoke:

  1. 创建一个委托,在委托中设置文本框的值。

  2. 使用控件的InvokeRequired属性检查是否需要调用委托。

  3. 如果需要调用委托,则使用控件的Invoke方法调用委托。

以下是示例代码:

// 委托,用于设置文本框的值
delegate void SetTextCallback(string text);

// 设置文本框的值
private void SetText(string text)
{
    // 检查是否需要调用委托
    if (textBox1.InvokeRequired)
    {
        // 使用控件的Invoke方法调用委托
        SetTextCallback d = new SetTextCallback(SetText);
        textBox1.Invoke(d, new object[] { text });
    }
    else
    {
        // 直接设置文本框的值
        textBox1.Text = text;
    }
}

// 在另一个线程中设置文本框的值
private void ThreadProc()
{
    string text = 'Hello World!';
    SetText(text);
}
C# WinForm 解决 System.InvalidOperationException: 线程间操作无效 - 跨线程访问控件

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

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