【问题标题】:Windows phone UI update from async function来自异步功能的 Windows 手机 UI 更新
【发布时间】:2016-06-10 04:06:35
【问题描述】:

我正在尝试更新 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();

谁能提供有关为什么将 viewModel 放在 GetResponseAsync 更新 UI 之前但将其放在之后不会更新 UI 的指针?

【问题讨论】:

  • await 指令之后,执行返回到 UI 线程(如果它是从 UI 线程调用的)。应用程序是否挂起?有没有抛出异常?

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


【解决方案1】:

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

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

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

原帖:Windows phone UI update from async function

【讨论】:

    猜你喜欢
    • 2019-04-27
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 2013-06-08
    • 2014-02-16
    • 2015-07-26
    相关资源
    最近更新 更多