我阅读了一篇关于线程安全调用以更新窗口窗体控件的 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();
但是我尝试了它并没有更新控件,我读到如果您创建一个新表单,您实际上是在尝试更新新表单的控件而不是更新预期的表单。无论如何,我的理解是否正确,是否有解决方案?
如果我弄错了一些术语,我深表歉意,试图真正掌握这一切