Мое приложение использует интернет, поэтому я хотел бы проверить, есть ли подключение к Интернету, а если нет - показать ошибку. я реализовал класс, как показано в this site:Запуск Изменено событие перед чем-либо изменения
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;
}
}
}
Но, используя этот подход, я должен дублировать мой код:
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
}
});
};
Поскольку InternetConnectionChanged
событие запускает только в случае изменения подключения к Интернету, но мне также нужно прямо сейчас , если есть подключение к Интернету в начале. Есть ли способ сделать это без дублирования кода и не писать каждый код как отдельный метод?