C# 交叉线程操作无效:控件';statusStrip';从创建它的线程以外的线程访问
我试过这个。 如C# 交叉线程操作无效:控件';statusStrip';从创建它的线程以外的线程访问,c#,multithreading,winforms,C#,Multithreading,Winforms,我试过这个。 如toolStripStatusLabel1.InvokeRequired 但是toolStripStatusLabel1没有invokererequired 我也试过这个。 它会出现错误,就像上面的无效参数一样 SetTextCallback d=新的SetTextCallback(SetText); 调用(d,新对象[]{form,ctrl,text}) 当我使用 ThreadHelperClass.SetText(这是toolStripStatusLabel1,“此文本已
toolStripStatusLabel1.InvokeRequired
但是toolStripStatusLabel1
没有invokererequired
我也试过这个。
它会出现错误,就像上面的无效参数一样
SetTextCallback d=新的SetTextCallback(SetText);
调用(d,新对象[]{form,ctrl,text})代码>
当我使用
ThreadHelperClass.SetText(这是toolStripStatusLabel1,“此文本已安全设置”)代码>
但当我使用textBox
我的代码有一个方法,它等待另一个使用线程在后台运行的方法的bool
Thread t = new Thread(TestRemoteDB);
t.Start();
// In TestRemoteDB() will call updateRemoteDBStatus()
像这样
private void updateRemoteDBStatus(bool successful)
{
if (successful)
{
toolStripStatusLabel4.Text = "OK!";
toolStripStatusLabel4.ForeColor = Color.Green;
}
else
{
toolStripStatusLabel4.Text = "Error!";
toolStripStatusLabel4.ForeColor = Color.Red;
}
}
试试这个:
this.BeginInvoke((Action)(() => toolStripStatusLabel1.Text = "This text was set safely."));
试试这个:
this.BeginInvoke((Action)(() => toolStripStatusLabel1.Text = "This text was set safely."));
您可以粘贴完整的代码吗?您可以粘贴完整的代码吗?的可能副本因为ToolStripStatusLabel没有BeginInvoke方法,所以无法工作。即使这样做了,也没有意义,因为ThreadHelperClass已经在使用Invoke在UI线程上执行代码。它不会编译,因为ToolStripStatusLabel不是控件,因此不能与OP链接的ThreadHelperClass一起使用。Lapsus,我的意思是“this”,并写了“ToolStripStatusLabel”。我认为这是一项工作,为我节省了大量代码。非常感谢@Marko Juvančič。这行不通,因为ToolStripStatusLabel没有BeginInvoke方法。即使这样做了,也没有意义,因为ThreadHelperClass已经在使用Invoke在UI线程上执行代码。它不会编译,因为ToolStripStatusLabel不是控件,因此不能与OP链接的ThreadHelperClass一起使用。Lapsus,我的意思是“this”,并写了“ToolStripStatusLabel”。我认为这是一项工作,为我节省了大量代码。非常感谢@Marko Juvančič。