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
.