【发布时间】:2019-12-28 11:13:55
【问题描述】:
UI 有一个名为 lblMyLabel 的标签。 它绑定到视图模型 MyViewModel。
一个任务正在另一个线程上运行,该线程从服务中提取消息。(例如)
当这个任务收到一个特定的值时,它应该用它来更新 UI 标签。
我总是得到一个错误,它是在不同的线程中编组的。
【问题讨论】:
标签: multithreading uwp
UI 有一个名为 lblMyLabel 的标签。 它绑定到视图模型 MyViewModel。
一个任务正在另一个线程上运行,该线程从服务中提取消息。(例如)
当这个任务收到一个特定的值时,它应该用它来更新 UI 标签。
我总是得到一个错误,它是在不同的线程中编组的。
【问题讨论】:
标签: multithreading uwp
当你想更新 UI 时,你应该在 UI 的调度线程上运行。你可以调用 Dispatcher.RunAsync 回到 UI 的调度线程。
private void Button_Click(object sender, RoutedEventArgs e)
{
//Start a Task
Task t = Task.Factory.StartNew(() => {
int i = 0;
for (i = 0; i <= 1000; i++)
{
}
//Back onto the UI thread
var a = Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
//Update UI
MyTextBlock.Text = "Update";
});
});
}
【讨论】: