问题描述
当运行应用程序连接的电话发生更改时,我们正在尝试检查主机服务器的可达性。我们正在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 (将#修改为@)