2016-05-11 13 views
0

Meine App nutzt Internet, also würde ich gerne überprüfen, ob es eine Internetverbindung gibt, und wenn nicht - Fehler anzeigen. Ich habe Klasse implementiert, wie in this site:Start Geändertes Ereignis, bevor sich etwas ändert

public class InternetConnectionChangedEventArgs : EventArgs 
{ 
    public InternetConnectionChangedEventArgs(bool isConnected) 
    { 
     this.isConnected = isConnected; 
    } 

    private bool isConnected; 
    public bool IsConnected 
    { 
     get { return isConnected; } 
    } 
} 

public static class Network 
{ 
    public static event EventHandler<InternetConnectionChangedEventArgs> 
     InternetConnectionChanged; 

    static Network() 
    { 
     NetworkInformation.NetworkStatusChanged += (s) => 
     { 
      if (InternetConnectionChanged != null) 
      { 
       var arg = new InternetConnectionChangedEventArgs(IsConnected); 
       InternetConnectionChanged(null, arg); 
      } 
     }; 
    } 

    public static bool IsConnected 
    { 
     get 
     { 
      var profile = NetworkInformation.GetInternetConnectionProfile(); 
      var isConnected = (profile != null 
       && profile.GetNetworkConnectivityLevel() == 
       NetworkConnectivityLevel.InternetAccess); 
      return isConnected; 
     } 
    } 
} 

Aber mit diesem Ansatz ich meinen Code kopieren haben gezeigt:

if(Network.IsConnected) 
{ 
    //do stuff with internet 
} 
else 
    //show error message 

Network.InternetConnectionChanged += async (s, args) => 
{ 
    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, async() => 
    { 
     if (args.IsConnected) 
     { 
      //do the same stuff with internet 
     } 
     else 
     { 
      //show the same error message 
     } 
    }); 
}; 

Da InternetConnectionChanged Ereignis nur dann, wenn Internetverbindung Änderungen startet, aber ich muss auch jetzt wenn zu Beginn eine Internetverbindung besteht. Gibt es einen Weg dazu, ohne Code zu duplizieren und nicht jeden Code als separate Methode zu schreiben?

Antwort

1

kapseln Sie Ihre Logik in seiner eigenen Methode, so etwas wie diese:

private void DoStuffDependingOnConnection(bool isConnected) 
{ 
    if (isConnected) 
    { 
     //... 
    } 
    else /* ... */ 
} 

Dann, wenn Ihr Programm ausführen startet

DoStuffDependingOnConnection(Network.IsConnected); 

Und Ihren Event-Handler wird wie folgt aussehen:

await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, 
          async() => DoStuffDependingOnConnection(args.IsConnected));