Если вы создаете универсальное приложение для Windows Phone 8.1/Windows 8.1 следующий класс поможет вам проверить доступность сети.

Класс NetworkAvailability

Это синглтон класс, что означает, что только один его экземпляр будет существовать на протяжении всего жизненного цикла приложения.

public class NetworkAvailability
{
	private static NetworkAvailability _networkAvailability;
	public static NetworkAvailability Instance
	{
		get { return _networkAvailability ?? (_networkAvailability = new NetworkAvailability()); }
		set { _networkAvailability = 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 NetworkAvailability()
	{
		NetworkInformation.NetworkStatusChanged += NetworkInformationOnNetworkStatusChanged;
		CheckInternetAccess();
	}
}

Метод NetworkInformationOnNetworkStatusChanged вызывается каждый раз, когда изменяется состояние сети. Этот метод, в свою очередь, обновляет свойство IsNetworkAvailable класса.

Использование

Всякий раз, когда вы должны проверить, если ли сеть, просто используйте:

if (NetworkAvailability.Instance.IsNetworkAvailable)
{
	// ...
}

Теги: сниппет , c# , windows , windows phone , uwp