我读了一篇关于线程安全调用的MSDN文章来更新窗口窗体控件,示例在下面
private void setTextSafeBtn_Click(
object sender,
EventArgs e)
{
this.demoThread =
new Thread(new ThreadStart(this.ThreadProcSafe));
this.demoThread.Start();
}
private void ThreadProcSafe()
{
this.SetText("This text was set safely.");
}
private void SetText(string text)
{
if (this.textBox1.InvokeRequired)
{
SetTextCallback d = new SetTextCallback(SetText);
this.Invoke(d, new object[] { text });
}
else
{
this.textBox1.Text = text;
}
}
如果你的线程在窗口形式构造函数中,我尝试它时效果很好。但是,例如,如果线程与Windows窗体的构造函数不同,那么如何从线程构造函数中访问它。我试图做类似
的事情 Form1 form1 = new Form1();
但是我尝试了它并没有更新控件,我读到如果你创建一个新表单,你实际上是在尝试更新新表单的控件,而不是更新预期的表单。无论如何,根据我的理解,我是否正确,是否有解决方案?
如果我的某些术语出错了,我道歉,试着抓住这一切真的