Windows Phone - сохранение универсального приложения MessageDialog при запуске

1

Я хочу показать 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.gics.

if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
  • 1
    В какой метод вы положили этот код?
  • 0
    Конструктор MainPage.xaml и попробуйте добавить функцию OnLaunch в App.xaml.cs. Получите ту же ошибку.
Показать ещё 1 комментарий
Теги:
win-universal-app
windows-phone-8.1

1 ответ

2
Лучший ответ

Этот тип исключения (UnauthorizedAccessException - Access Denied), когда дело доходит до MessageDialogs, обычно происходит, когда у вас уже открыт один MessageDialog при попытке открыть другой.

Мне удалось заставить ваш код работать на моей стороне в обоих конструкторах страниц (без ожидания), а также в обработчике событий async, загруженном на страницу. Но если бы я попытался сделать это в двух местах один за другим, это исключало бы исключение по причине, упомянутой выше.

Поэтому, пожалуйста, убедитесь, что у вас нет другого MessageDialog, когда вы пытаетесь это показать. Возможно, вы оставили этот код как в конструкторе страницы, так и в обработчике событий, запущенном приложением? Это может вызвать это.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню