Windows Phone 8 обработчик соединения / доступность интернета
Моя команда работает над заявкой на командный проект. На данный момент нам нужен обработчик событий для проверки состояния соединения (если оно включено / выключено).
У меня были большие надежды на System.Net.NetworkInformation
Пространство имен, но, к сожалению, самые важные вещи не поддерживаются в wp8.
Кто-нибудь может мне помочь с этим немного?
Редактировать 1#
Кажется, я не уточнил свою проблему. Я использую Mvvm Light Expresion, и он не поддерживает это пространство имен или, по крайней мере, я не могу его добавить.
Я новичок в использовании VS и C# Atm, возможно, я делаю что-то не так, но просто когда я пытаюсь добавить ссылку на мой проект, он не отображается.
3 ответа
Я не пробовал пространство имен System.Net.NetworkInformation в WP8. Но новое пространство имен Windows Phone Runtime WP8 для Windows.Networking.Connectivity работает просто отлично.
Используйте Windows.Networking.Connectivity.NetworkInformation.NetworkStatusChanged, чтобы узнать, когда изменяются условия сети, и используйте свойства Microsoft.Phone.Net.NetworkInformation.NetworkInterface или свойства Windows.Networking.Connectivity.NetworkInformation, чтобы узнать, что происходит.
private async void MainPage_Loaded(object sender, RoutedEventArgs e)
{
PrintNetworkStatus();
NetworkInformation.NetworkStatusChanged += NetworkInformation_NetworkStatusChanged;
}
void NetworkInformation_NetworkStatusChanged(object sender)
{
PrintNetworkStatus();
}
private void PrintNetworkStatus()
{
Dispatcher.BeginInvoke(() =>
MessageBox.Show(NetworkInterface.NetworkInterfaceType +
Environment.NewLine +
NetworkInterface.GetIsNetworkAvailable()));
}
Когда я тестирую этот фрагмент кода на моем WP8 Lumia 920, он работает как положено. При запуске, когда мой телефон работает только по WiFi, я вижу следующее MessageBox:
И как только я выключаю свой маршрутизатор WiFI и теряю соединение WiFi на телефоне, я вижу следующее MessageBox:
Попробуй это:
bool isNetwork=NetworkInterface.GetIsNetworkAvailable();
if(!isNetwork)
{
//proceed with your code
}
В App.xaml.cs создайте свойство как ниже
/// <summary>
/// check if network is available
/// </summary>
public bool IsNetworkAvailable
{
get
{
return NetworkInterface.NetworkInterfaceType != NetworkInterfaceType.None;
}
}
И вы можете использовать это свойство в любом месте вашего проекта, как показано ниже
if (((App) Application.Current).IsNetworkAvailable)
{
//Lines of Code
}
else
{
MessageBox.Show("Not Connected to Network!", "Checking Connection!",
MessageBoxButton.OK);
}