Internetverbindung in Windows 8-App überprüfen

Hier ein kleines Beispiel, das zeigt, wie man in einer Windows 8-App mit C# überprüfen kann, ob das System gerade Internetzugriff hat oder nicht:

Methode: CheckIfUserIsOnline

1
2
3
4
5
6
7
8
9
10
11
12
private bool CheckIfUserIsOnline()
{
  bool isOnline = false;
  ConnectionProfile profile = Windows.Networking.Connectivity.NetworkInformation.GetInternetConnectionProfile();
  if (profile != null)
  {
    NetworkConnectivityLevel connectivityLevel = profile.GetNetworkConnectivityLevel();
    if (connectivityLevel == NetworkConnectivityLevel.InternetAccess)
      isOnline = true;
  }
  return isOnline;
}


Besonders elegant ist es, wenn man mit einem Event Handler auf die Änderung der Internetverbindung während des Betriebs der App reagiert:

Einsatz von CheckIfUserIsOnline mit Event Handler

public MainPage()
{
  this.InitializeComponent();
  OnNetworkStatusChange(this);
  NetworkInformation.NetworkStatusChanged += new NetworkStatusChangedEventHandler(OnNetworkStatusChange);
}
 
private void OnNetworkStatusChange(object sender)
{
  bool isOnline = CheckIfUserIsOnline();
  if (!isOnline)
    Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, ShowOfflineMessage);
}
 
private async void ShowOfflineMessage()
{
  MessageDialog dialog = new MessageDialog("You are not connected to the Internet.", "Warning");
  await dialog.ShowAsync();
}

Achtung:
Der Event Handler wird asynchron zum UI-Thread geladen. Das bedeutet, dass der Event Handler keine Texte in der UI direkt ändern oder anzeigen kann. Dafür muss der Dispatcher verwendet werden. Andernfalls gibt es eine System.Exception.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.