我已经看到(并阅读)关于使用 Dispatcher.BeginInvoke 来确保 UI 更新发生在 UI 线程上。我明白这个道理。
但是我看到了在视图代码隐藏中分配属性(例如 TextBlock 的 Text 属性)的示例,仅当您在此 Dispatcher.BeginInvoke 中分配它时才被声明为安全的。
问题 如果我从视图的代码隐藏中操作任何内容,是否暗示它正在 UI 线程上进行操作(假设我没有使用 BackgroundWorker 或异步服务调用)。
在我上面提到的示例中,没有使用其他线程或异步操作。
问题 2 如果我有一个异步 Web 服务处理程序,并且我想从该处理程序中更新 TextBlock 的字符串。我可以直接分配 TB 的 Text 属性,还是应该使用 Dispatcher.BeginInvoke。请注意,我通常不会这样做,因为我更喜欢数据绑定而不是像这样的直接 UI 元素操作。