【问题标题】:Windows Phone 8.1 MessageDialog resultsWindows Phone 8.1 MessageDialog 结果
【发布时间】:2015-08-11 12:31:44
【问题描述】:

我在从 Windows Phone 8.1 中的 MessageDialog 获取选定选项时遇到问题。我要做的是等待用户选择选项,然后获取选择的选项并进行处理。

我这样做:

... initializing MessageDialog object called dialog ...
answer = (int)dialog.ShowAsync().GetResults().Id

但是,answer 变量没有被分配,因为 GetResults 立即返回而不等待用户操作并返回 null。

我必须同步获取结果,因为这段代码在属性内,更重要的是在 catch 块内。

【问题讨论】:

    标签: c# xaml windows-phone-8.1


    【解决方案1】:

    您需要等待任务完成,GetResults 才会有有效的结果。简单的方法是使用 await 等待对话框完成:

    var cmd = await dialog.ShowAsync();
    answer = (int)cmd.Id;
    

    您不能在属性中调用异步函数,也不能阻塞 UI 线程以使 MessageDialog 同步。

    而是返回一个存根答案并调用另一个函数来获取异步结果。当结果在属性中可用时并触发更改通知。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-25
      • 2023-04-03
      • 1970-01-01
      • 2016-12-01
      • 1970-01-01
      相关资源
      最近更新 更多