private void ProcessPostedEvents(TelemetryEvent telemetryEvent) { KeyValuePair <int, Subscription>[] array; lock (lockObject) { array = Subscriptions.ToArray(); } KeyValuePair <int, Subscription>[] array2 = array; for (int i = 0; i < array2.Length; i++) { KeyValuePair <int, Subscription> keyValuePair = array2[i]; Subscription value = keyValuePair.Value; bool flag = false; try { flag = value.Match.IsEventMatch(telemetryEvent); } catch (Exception exception) { PostFaultEvent("VS/Core/TelemetryNotification/FilterFault", value.Match, exception); Unsubscribe(keyValuePair.Key); } if (flag) { if (value.SingleNotification) { Unsubscribe(keyValuePair.Key); } try { TelemetryEvent obj = telemetryEvent.CloneTelemetryEvent(); value.Handler(obj); } catch (Exception exception2) { PostFaultEvent("VS/Core/TelemetryNotification/HandlerFault", value.Match, exception2); } } } }