Проверка доступности сети в универсальных приложениях Windows
Если вы создаете универсальное приложение для Windows Phone 8.1/Windows 8.1 следующий класс поможет вам проверить доступность сети.
Класс NetworkAvailabilty
Это синглтон класс, что означает, что только один его экземпляр будет существовать на протяжении всего жизненного цикла приложения.
public class NetworkAvailabilty
{
private static NetworkAvailabilty _networkAvailabilty;
public static NetworkAvailabilty Instance
{
get { return _networkAvailabilty ?? (_networkAvailabilty = new NetworkAvailabilty()); }
set { _networkAvailabilty = value; }
}
private bool _isNetworkAvailable;
public event Action<bool> OnNetworkAvailabilityChange = delegate { };
public bool IsNetworkAvailable
{
get
{
return _isNetworkAvailable;
}
protected set
{
if (_isNetworkAvailable == value) return;
_isNetworkAvailable = value;
OnNetworkAvailabilityChange(value);
}
}
private void CheckInternetAccess()
{
var connectionProfile = NetworkInformation.GetInternetConnectionProfile();
IsNetworkAvailable = (connectionProfile != null &&
connectionProfile.GetNetworkConnectivityLevel() ==
NetworkConnectivityLevel.InternetAccess);
Debug.WriteLine("has network changed: " + IsNetworkAvailable);
}
private void NetworkInformationOnNetworkStatusChanged(object sender)
{
CheckInternetAccess();
Debug.WriteLine("network status changed");
}
private NetworkAvailabilty()
{
NetworkInformation.NetworkStatusChanged += NetworkInformationOnNetworkStatusChanged;
CheckInternetAccess();
}
}
Метод NetworkInformationOnNetworkStatusChanged
вызывается каждый раз, когда изменяется состояние сети. Этот метод, в свою очередь, обновляет свойство IsNetworkAvailable
класса.
Использование
Всякий раз, когда вы должны проверить, если ли сеть, просто используйте:
if (NetworkAvailabilty.Instance.IsNetworkAvailable)
{
// ...
}
Теги: сниппет, c#, windows, windows phone, uwp