如何解决在iOS上进行调试时,Connectivity.ConnectivityChanged EventHandler的附加方法会挂起
当运行应用程序连接的电话发生更改时,我们正在尝试检查主机服务器的可达性。我们正在Xamarin.Essentials.Connectivity类中使用ConnectivityChanged(EventHandler)。但是,当我们尝试将Connectivity_ConnectivityChanged方法附加到EventHandler时,它将挂起。
public App()
{
InitializeComponent();
Task.Run(async () => { await ApplicationContext.InitialiseAsync(); }).Wait();
Connectivity.ConnectivityChanged += Connectivity_ConnectivityChanged;
if (ApplicationContext.Configuration != null && ApplicationContext.Configuration.IsValid())
{
LoginPage loginPage = new LoginPage();
Task.Run(async () => { await ((LoginViewModel)loginPage.BindingContext).InitialiseAsync(true); }).Wait();
MainPage = new NavigationPage(loginPage);
}
else
{
MainPage = new NavigationPage(new ConnectionPage());
}
((NavigationPage)MainPage).Popped += Page_CleanUp;
}
private async void Connectivity_ConnectivityChanged(object sender,ConnectivityChangedEventArgs e)
{
if (DependencyService.Get<IServerReachability>().ConnectionAvailable())
{
await ApplicationContext.SetNetworkConnectionAsync(ConnectionState.Online);
await ApplicationContext.RESTServiceConnectionTestAsync();
}
else
{
await ApplicationContext.SetNetworkConnectionAsync(ConnectionState.Offline);
}
}
在iOS上使用VS for Windows进行调试时,这仅是iOS上的问题。将应用程序部署到iPhone后,就没有问题了
我们创建了一个测试应用:
public App()
{
InitializeComponent();
Connectivity.ConnectivityChanged += ApplicationContext.Connectivity_ConnectivityChanged;
MainPage = new MainPage();
}
public static async void Connectivity_ConnectivityChanged(object sender,ConnectivityChangedEventArgs e)
{
await Task.Delay(1);
}
我们在Windows上使用物理设备对其进行了调试,并成功附加了该方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。