从另一个线程更新按钮文本

时间:2015-09-17 11:30:14

标签: c# multithreading

我真的无法理解这种行为,并希望有人可以向我解释。考虑到我想从另一个线程更新我的按钮文本:

Task.Factory.StartNew((() =>
{
    button1.Text = "Hello";
}));

根据我的理解,我不应该这样做,因为我在另一个线程但不知何故这是有效的,但如果我将这一行添加到代码中:

Task.Factory.StartNew((() =>
{
    Thread.Sleep(500);
    button1.Text = "Hello";
}));

然后它给了我:“跨线程操作无效”但现在有两个问题。

1。)为什么代码1允许我从另一个线程更改按钮文本?

2.。)当我添加那行代码时,为什么代码2会崩溃?

编辑:请注意,我的主要问题是为什么它允许我在第一个代码中更新UI内容而在第二个代码中崩溃,而不是在Task.Factory.StartNew生成新线程时。

0 个答案:

没有答案