Может ли пользователь уйти во время ожидаемого DisplayAlert - PullRequest
0 голосов
/ 04 октября 2018

Извиняюсь, если это звучит как глупый вопрос, но мне просто любопытно.

Скажи, что у меня есть это:

async void buttonTapped(object sender, EventArgs e)
{
    var sure = await DisplayAlert("Confirm", "Are you sure?", "Ok", "Cancel");
    // Can the user navigate away before execution gets to this point?
}

Смотри, как я понимаю async/await, это то, что пользовательский интерфейсстановится отзывчивым, как только ударил await.Таким образом, теоретически, при отображении предупреждения отображается, например, пользователь может нажать кнопку «Назад» и вернуться на предыдущую страницу?

ИлиЯ ошибаюсь?

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

async/await не делает интерфейс отзывчивым.Он просто говорит коду ждать в этой точке ожидаемого завершения метода.

Например:

async void SomeMethod()
{
    // Do some stuff

    await Task.Delay(1000);
    Task.Delay(1000);

    // Do more stuff
}

В приведенном выше методе код будет выполнять некоторые действия, а затем блокироваться до завершения first Task.Delay.Затем он продолжит делать больше вещей.

Если у вас нет await (как с second Task.Delay, код будет просто продолжаться, не дожидаясь секунда Task.Delay. На самом деле, вы должны получить предупреждение об этом. Общее время ожидания вышеописанного метода составляет 1 секунда , потому что только первыйОжидается метод Task.Delay.


Что касается вопроса перемещения по мере отображения диалогового окна, да, это вполне возможно. Если бы пользователь сверхбыстро нажал кнопку "Назад"непосредственно перед отображением диалогового окна оно перейдет на предыдущую страницу и покажет диалоговое окно (если только кнопка «Назад» не закрывает приложение, в этом случае диалоговое окно не будет отображаться).

0 голосов
/ 04 октября 2018

Как я знаю, когда у вас есть DisplayAlert с ожиданием, он ждет вашего ответа.Когда вы нажимаете на кнопку «Назад», ответ DisplayAkert будет null (в вашем случае, sure значение параметра null), также вы просто закрываете свое предупреждение, и это все.Если вы хотите вернуться на предыдущую страницу с текущей страницы, где вы называете свой DisplayAlert, я думаю, вам нужно создать собственное оповещение, например PopupPage .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...