WPF:UI 控件必须在 UI 线程更新 Dispatcher.Invoke

TextBlock 确实是一个 UI 控件,它绑定了 CurrentWaferId

但按照"UI 控件必须在 UI 线程更新"的规则,CurrentWaferId 的赋值也应该需要 Dispatcher.Invoke但为什么不需要呢?

总结对比

属性 赋值方式 更新机制 是否需要 Dispatcher
CurrentWaferId 字符串赋值 PropertyChanged → WPF 自动调度到 UI 线程 不需要
BottomBorderColor 创建 Brush 对象并赋值 直接操作 DependencyPropertySetValue 必须Brush 创建不在 UI 线程)
AddLogDieChangedLogs.Insert 修改 ObservableCollection CollectionChanged → 需要 UI 线程触发 必须ListBox 更新 UI 需要 UI 线程)

一句话总结

ObservablePropertyPropertyChanged 事件 WPF 绑定系统会自动调度到 UI 线程,但创建 Brush、修改 ObservableCollection 等操作需要手动用 Dispatcher.Invoke 切到 UI 线程。 🎯