C# WinForm 解决 System.InvalidOperationException: 线程间操作无效 - 跨线程访问控件
您可以使用以下方法将文本框的值设置为另一个线程中的值,而不使用 BeginInvoke:
-
创建一个委托,在委托中设置文本框的值。
-
使用控件的InvokeRequired属性检查是否需要调用委托。
-
如果需要调用委托,则使用控件的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);
}
原文地址: https://www.cveoy.top/t/topic/mFBU 著作权归作者所有。请勿转载和采集!