private static void ChangedAddress(object sender, EventArgs eventArgs)
{
lock (syncObject){
bool isAvailableNow = SystemNetworkInterface.InternalGetIsNetworkAvailable();
if (isAvailableNow != isAvailable)
{
isAvailable = isAvailableNow;
DictionaryEntry[] callerArray = new DictionaryEntry[s_availabilityCallerArray.Count];
s_availabilityCallerArray.CopyTo(callerArray, 0);
for (int i = 0; i < callerArray.Length; i++)
{
NetworkAvailabilityChangedEventHandler handler = (NetworkAvailabilityChangedEventHandler)callerArray[i].Key;
ExecutionContext context = (ExecutionContext)callerArray[i].Value;
if (context == null)
{
handler(null, new NetworkAvailabilityEventArgs(isAvailable));
}
else
{
ExecutionContext.Run(context.CreateCopy(), s_RunHandlerCallback, handler);
}
}
}
}
}