Windows Phone -在启动时存储通用应用程序MessageDialog

本文关键字:应用程序 MessageDialog 存储 Phone 启动 Windows | 更新日期: 2023-09-27 18:09:34

我想在应用程序启动时显示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();

Windows Phone -在启动时存储通用应用程序MessageDialog

当涉及到MessageDialogs时,这种类型的异常(UnauthorizedAccessException - Access Denied)通常发生在您试图打开另一个MessageDialogs时,您已经打开了一个MessageDialog。

我能够让你的代码工作在我这一边的页面构造函数(没有等待,虽然),并在页面加载异步事件处理程序。但是,如果我尝试在两个地方一个接一个地这样做,它就会抛出异常,原因如上所述。

所以,请检查你没有打开另一个MessageDialog当你试图显示这个。也许你把这段代码留在了页面构造函数和应用程序启动的事件处理程序中?