为什么在另一个线程中运行某些东西时,UI线程会被阻塞?

时间:2009-04-02 11:31:37

标签: c# winforms multithreading events

假设我有正常的button.Click事件。

如果我尝试从此事件内部访问UI元素,我可能会遇到不需要的行为 - 甚至是异常(在调试时)。这种情况下的常见例外是:...cannot access UI elements from thread different than they were created in

由于这是另一个线程(与主要不同),当我在事件中执行耗时的操作时,为什么我的UI被阻止了?

1 个答案:

答案 0 :(得分:3)

这里的框架是什么? WinForm的? WPF?

在winform(对于点击事件)中,您在UI线程上。所以你可以从click事件中与UI交谈。如果发生了其他事情,那就有问题了。你确定你没有进行计时器回调吗?

从更一般的意义上讲,您可以使用InvokeRequired / Invoke等将控制权传递给UI线程。