Files
ZuneShell.dll/ZuneShell/ZuneUI/InternetConnection.cs
T

64 lines
1.9 KiB
C#

// Decompiled with JetBrains decompiler
// Type: ZuneUI.InternetConnection
// Assembly: ZuneShell, Version=4.7.0.0, Culture=neutral, PublicKeyToken=ddd0da4d3e678217
// MVID: FC8028F3-A47B-4FB4-B35B-11D1752D8264
// Assembly location: C:\Program Files\Zune\ZuneShell.dll
using System;
using System.Net.NetworkInformation;
namespace ZuneUI
{
public class InternetConnection : NotifyPropertyChangedImpl
{
private static InternetConnection _instance;
private bool _isConnected;
private bool _initializationSucceeded;
private InternetConnection() => this.Initialize();
public static InternetConnection Instance
{
get
{
if (_instance == null)
_instance = new InternetConnection();
return _instance;
}
}
public bool IsConnected
{
get
{
if (!this._initializationSucceeded)
this.IsConnected = Win32InternetConnection.IsConnected;
return this._isConnected;
}
private set
{
if (this._isConnected == value)
return;
this._isConnected = value;
this.FirePropertyChanged(nameof(IsConnected));
}
}
private void Initialize()
{
try
{
this._isConnected = NetworkInterface.GetIsNetworkAvailable();
NetworkChange.NetworkAvailabilityChanged += new NetworkAvailabilityChangedEventHandler(this.OnNetworkAvailabilityChanged);
this._initializationSucceeded = true;
}
catch (Exception ex)
{
this._initializationSucceeded = false;
}
}
private void OnNetworkAvailabilityChanged(object sender, NetworkAvailabilityEventArgs e) => this.IsConnected = e.IsAvailable;
}
}