线程安全调用来自不同构造函数的窗体控件

时间:2013-03-31 15:44:06

标签: c#

我读了一篇关于线程安全调用的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();

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

如果我的某些术语出错了,我道歉,试着抓住这一切真的

0 个答案:

没有答案