Подтвердить что ты не робот

Windows Phone 8 Connection Handler/Доступность Интернета

Моя команда работает над приложением команды. На данный момент нам нужен обработчик события для проверки состояния соединения (если он включен/выключен).

У меня были большие надежды в пространстве имен System.Net.NetworkInformation, но, к сожалению, наиболее важные вещи не поддерживаются в wp8.

Кто-нибудь может мне немного помочь?

Изменить 1 #

Кажется, я не очень хорошо определил свою проблему. Я использую Mvvm light expresion, и он не поддерживает это пространство имен или, по крайней мере, я не могу его добавить.

Я новичок в использовании VS и С# atm, возможно, я делаю неправильно, но просто, когда я пытаюсь добавить ссылку на мой проект, она не отображается.

4b9b3361

Ответ 1

Я не пробовал пространство имен System.Net.NetworkInformation на WP8. Но новое пространство имен Windows Runtime WP8 для Windows.Networking.Connectivity работает нормально.

Используйте Windows.Networking.Connectivity.NetworkInformation.NetworkStatusChanged, чтобы знать, когда условия сети меняются и используют свойства Microsoft.Phone.Net.NetworkInformation.NetworkInterface или Windows.Networking.Connectivity.NetworkИнформационные свойства, чтобы увидеть, что происходит.

    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:

Connected Messagebox

И как только я выключу свой WiFI-маршрутизатор, и Wi-Fi-соединение на телефоне потеряно, я вижу следующее MessageBox:

Disconnected MessageBox

Ответ 2

Попробуйте следующее:

bool isNetwork=NetworkInterface.GetIsNetworkAvailable();
if(!isNetwork)
{
   //proceed with your code

}

Ответ 3

В 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);     
}