为什么会不能够直接给label改变text,而是要标签流入

为什么会不能够直接给label改变text,而是要标签注入?
为什么要用标签注入的方式,给label加text,就是action<> = delegate啊,invoke啊什么的,
感觉好奇怪啊,以前自己搞搞,直接拖进来一个label控件,代码里label1.text = "" 就行了,为什么现在不能够直接改变,
而是变成了要用"标签注入""action""delegate""invoke"这样,不然就会出现引用到实例失败什么的错误,
感觉很奇怪,搞不懂,求解答??
------解决思路----------------------
后台线程不能更新与 UI 线程中的 Dispatcher 关联的内容。为了使该后台线程能够访问 Text 属性,该后台线程必须将此工作委托给与该 UI 线程关联的 Dispatcher,使用 Invoke (同步)或 BeginInvoke (异步)操作。
label1.Dispatcher.BeginInvoke(() => label1.Text = "text");