Control.Invoke来自运行表单的同一个线程

时间:2016-07-04 13:16:53

标签: c# .net multithreading winforms

在C#中,使用Control.Invoke从运行表单的同一线程更改Control的属性是否有任何问题?

我知道最好使用Control.Property = value,但我想知道使用Control.Invoke的后果是什么。

示例:

使用此:

public partial class FormMain : Form
{
    private void Button1_Click(object sender, EventArgs e)
    {
        this.Invoke(new delegate {Label1.Text = "Hello"});
    }
}

而不是:

public partial class FormMain : Form
{
    private void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = "Hello";
    }
}

1 个答案:

答案 0 :(得分:-1)

this.Invoke(new Action(
    delegate()
    {
        label2.Text = "Test";
    }));

this.Invoke(new MethodInvoker(
    delegate()
    {
        label2.Text = "Test";
    }));