很抱歉,这听起来像是一个愚蠢的问题,但我很好奇。
说我有这个:
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
,UI就会响应。因此,从理论上讲,警报显示为 as ,用户实际上可以点击返回按钮,然后返回上一页?
还是我弄错了?
答案 0 :(得分:0)
据我所知,当您有DisplayAlert
处于等待状态时,它正在等待您的响应。当您点击“后退”按钮时,DisplayAkert
的响应为null
(在您的情况下,sure
参数值为null
),您也只是关闭了警报, 就这样。如果您想从当前页面返回上一页,您将其称为DisplayAlert
,我认为您需要创建自定义提醒,例如PopupPage。
答案 1 :(得分:0)
async/await
不能使UI响应。它只是告诉代码在该点等待所等待的方法完成。
例如:
async void SomeMethod()
{
// Do some stuff
await Task.Delay(1000);
Task.Delay(1000);
// Do more stuff
}
在上述方法中,代码将执行一些操作,然后阻塞,直到完成 first Task.Delay
。然后,它将继续做更多的事情。
如果您没有await
(与 second Task.Delay
一样,则代码将继续执行而无需等待 second Task.Delay
完成。实际上,您应该收到警告。上述方法等待的总时间为 1秒,因为只有 first 等待Task.Delay
方法。
关于对话框显示时导航离开的问题,是的,完全有可能。如果用户要在对话框显示之前快速单击后退按钮,它将导航到上一页并显示该对话框(除非后退按钮关闭了应用程序,在这种情况下该对话框不会显示)。>