Я запускаю приложение UWP с 2 страницами. В MainPage я запускаю асинхронный метод ContentDialog, который открывает страницу 2 во фрейме. На странице 2 у меня есть дополнительный ContentDialog, который я открываю нажатием кнопки. В методе Button_Click я хочу закрыть работающий метод Async () и ожидать запуска следующего, пока я не буду на 100% уверен, что первый из них закрыт.
Проблема, с которой я сталкиваюсь сейчас, заключается в том, что программа аварийно завершает работу, если я нажимаю кнопки вторичного ContentDialog слишком быстро после его открытия.
Я пробовал спящий поток, но это только задерживает проблему.
Главная страница (CustomerInfoPage):
transactionContent = new ContentDialog();
Frame transactionFrame = new Frame();
transactionFrame.Navigate(typeof(TransactionPage), selectedAccount);
transactionContent.Content = transactionFrame;
transactionContent.ShowAsync();
Page2 (TransactionPage):
private async void DepositButton_ClickAsync(object sender, RoutedEventArgs e)
{
CustomerInfoPage.transactionContent.Hide();
ContentDialog confirmationDialog = new ContentDialog
{
Title = "Deposit Funds.",
Content = $"You will deposit {depositTextBox.Text} SEK.\nYour new balance will be: {ReceivedAccount.Balance + deposit} SEK",
PrimaryButtonText = "CONFIRM",
SecondaryButtonText = "CANCEL"
};
confirmationDialog.PrimaryButtonClick += ConfirmationDialog_PrimaryButtonClick;
await confirmationDialog.ShowAsync();
async void ConfirmationDialog_PrimaryButtonClick(ContentDialog _sender, ContentDialogButtonClickEventArgs args)
{
confirmationDialog.Hide();
}
CustomerInfoPage.transactionContent.ShowAsync();
}
Так что это работает, пока вы не вызываете ConfirmationDialog_PrimaryButtonНажмите слишком быстро, нажав насразу после открытия.