2.4- WPF中非 UI 线程上安全地更新 UI 控件方法
1. 什么是 Dispatcher
?
WPF 的 UI 元素是 单线程模型(STA,Single-Threaded Apartment),只能在创建它们的线程(通常是主 UI 线程)上修改。如果尝试在后台线程直接修改 UI,会抛出 InvalidOperationException
:
The calling thread cannot access this object because a different thread owns it.
Dispatcher
提供了 线程间通信(跨线程调用) 的机制,允许你在非 UI 线程上 调度 代码到 UI 线程执行。
2. App.Current.Dispatcher
的作用
App.Current.Dispatcher
返回当前 WPF 应用程序(Application.Current
)的 主 UI 线程的