我正在开发一个xamarin.forms应用程序。
在一个页面上,在开始一个视频之前,我不得不 检查网络连接是否打开 否则我就会显示一个错误信息,然后 我必须关闭页面.
我写了这个代码,但它不工作,弹出窗口显示,但在我按 "确定 "之后 应用程序冻结,无法工作了.
private void ContentPage_Appearing(object sender, EventArgs e)
{
if (Connectivity.NetworkAccess != NetworkAccess.Internet)
{
DisplayAlert("WARNING!", "Error message!", "OK");
Navigation.PopModalAsync();
}
else
{
//...
}
}
控制是在内容页的 OnAppearing
事件,是否因此 Navigation.PopModalAsync()
不工作?我怎么才能解决这个问题呢?
你应该使用异步操作,因为这两种操作都是为了让你的网站更安全。DisplayAlert
和 PopModalAsync
返回一个任务。另外,你应该覆盖页面的OnAppearing方法,并删除Appearing事件处理程序。
protected override async void OnAppearing()
{
base.OnAppearing();
if (Connectivity.NetworkAccess != NetworkAccess.Internet)
{
await DisplayAlert("WARNING!", "Error message!", "OK");
await Navigation.PopModalAsync();
}
else
{
//...
}
}
同样使用 async void
不建议使用MVVM,我建议使用MVVM,不要直接在页面的codebehind上写代码,但现在应该可以。