0

我阅读了一篇关于线程安全调用以更新窗口窗体控件的 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();

但是我尝试了它并没有更新控件,我读到如果您创建一个新表单,您实际上是在尝试更新新表单的控件而不是更新预期的表单。无论如何,我的理解是否正确,是否有解决方案?

如果我弄错了一些术语,我深表歉意,试图真正掌握这一切

4

0 回答 0