我正在尝试更新Windows Phone应用中的视图模型。但是在更新视图模型时,UI没有得到更新。
var response = await request.GetResponseAsync();
Stream source = response.GetResponseStream();
this.viewModel.VideoDownloadPercentage = 50;
虽然以下代码能够更新UI
var response = await request.GetResponseAsync();
this.viewModel.VideoDownloadPercentage = 50;
Stream source = response.GetResponseStream();
任何人都可以提供一些指针,说明为什么在GetResponseAsync更新UI之前放置viewModel但是之后放置它不是吗?
答案 0 :(得分:-1)
不允许直接从异步线程更新UI,因为UI控件不是线程安全的。
从异步线程更新UI的最简单方法是使用Dispatcher类。
要确定是否可以直接更新UI,可以使用CheckAccess()方法。如果此方法返回true,则表示您可以直接更新UI。否则,您必须使用Dispatcher类的BeginInvoke()方法以线程安全的方式更新UI。