来自异步功能的Windows手机UI更新

时间:2015-08-09 18:55:54

标签: c# mvvm windows-phone-8.1 async-await

我正在尝试更新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但是之后放置它不是吗?

1 个答案:

答案 0 :(得分:-1)

不允许直接从异步线程更新UI,因为UI控件不是线程安全的。

从异步线程更新UI的最简单方法是使用Dispatcher类。

要确定是否可以直接更新UI,可以使用CheckAccess()方法。如果此方法返回true,则表示您可以直接更新UI。否则,您必须使用Dispatcher类的BeginInvoke()方法以线程安全的方式更新UI。

原帖:Windows phone UI update from async function