我在Windows Phone 8.1中从MessageDialog获取选定选项时遇到问题。我想要做的是等待用户选择该选项,然后获取所选的选项并进行处理。
我这样做:
... initializing MessageDialog object called dialog ...
answer = (int)dialog.ShowAsync().GetResults().Id
但是,由于GetResults在不等待用户操作的情况下立即返回并返回null,因此answer
变量未被分配。
我必须同步获取结果,因为此代码位于属性中,更重要的是位于catch块内。
答案 0 :(得分:4)
在GetResults获得有效结果之前,您需要等待任务完成。简单的方法是使用await等待对话框完成:
var cmd = await dialog.ShowAsync();
answer = (int)cmd.Id;
您无法在属性中调用异步函数,也无法阻止UI线程使MessageDialog同步。
而是返回一个存根答案并调用另一个函数来获取异步结果。当结果在酒店提供并触发更改通知时。