Windows Phone - 启动时存储Universal App MessageDialog

时间:2014-06-21 12:30:52

标签: c# windows-phone-8.1 win-universal-app

我想在应用启动时显示messagedialog。但在通用应用程序中,此代码无法正常工作。 我想要求用户进行审核。

Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
var composite = localSettings.Values["askforreview"];

if (composite == null)
{
    localSettings.Values.Add("askforreview", true);
    composite = true;
}
bool askforreview = Convert.ToBoolean(composite);
if (askforreview)
{
    MessageDialog dialog = new MessageDialog("some message");
    dialog .Commands.Add(new UICommand("Yes", ( command) =>
      {
          Launcher.LaunchUriAsync(CurrentApp.LinkUri);
      }));
    dialog.Commands.Add(new UICommand("Not Now"));
    await dialog .ShowAsync();
}

当我调试应用程序时,我总是收到错误" a.ShowAsnyc"声明。程序在App.g.i.cs中停止发表此声明。

if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();

1 个答案:

答案 0 :(得分:2)

当遇到MessageDialog时,这种类型的异常(UnauthorizedAccessException - Access Denied)通常会在您尝试打开另一个MessageDialog时打开一个MessageDialog。

我能够在两个页面构造函数中使用您的代码(尽管没有等待),并且在页面加载的异步事件处理程序中。但是如果我试图在一个接一个地在两个地方做这件事,那么就会抛出异常,原因如上所述。

因此,当您尝试显示此消息时,请检查您是否打开了另一个MessageDialog。您是否可以将此代码留在页面构造函数和应用程序启动的事件处理程序中?这可能会导致它。