Я хочу показать 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();
Этот тип исключения (UnauthorizedAccessException - Access Denied), когда дело доходит до MessageDialogs, обычно происходит, когда у вас уже открыт один MessageDialog при попытке открыть другой.
Мне удалось заставить ваш код работать на моей стороне в обоих конструкторах страниц (без ожидания), а также в обработчике событий async, загруженном на страницу. Но если бы я попытался сделать это в двух местах один за другим, это исключало бы исключение по причине, упомянутой выше.
Поэтому, пожалуйста, убедитесь, что у вас нет другого MessageDialog, когда вы пытаетесь это показать. Возможно, вы оставили этот код как в конструкторе страницы, так и в обработчике событий, запущенном приложением? Это может вызвать это.