private void RemoveHandlers(DispatcherTimer dispatchTimer) { var eventField = dispatchTimer.GetType().GetField("Tick", BindingFlags.NonPublic | BindingFlags.Instance); var eventDelegate = (Delegate)eventField.GetValue(dispatchTimer); var invocatationList = eventDelegate.GetInvocationList(); foreach (var handler in invocatationList) { dispatchTimer.Tick -= ((EventHandler)handler); } }
/// <summary> /// Removes the given DispatcherTimer tick events if has any. /// </summary> /// <param name="dispatchTimer"></param> private void RemoveHandlers(DispatcherTimer dispatchTimer) { try { var eventField = dispatchTimer.GetType().GetField("Tick", BindingFlags.NonPublic | BindingFlags.Instance); var eventDelegate = (Delegate)eventField.GetValue(dispatchTimer); if (eventDelegate != null) { var invocatationList = eventDelegate.GetInvocationList(); foreach (var handler in invocatationList) { dispatchTimer.Tick -= ((EventHandler)handler); } } } catch (Exception e) { var logger = LogHelper.getInstance(); logger.Log(Models.Logging.LogType.DbLog, this.GetType().ToString(), "RemoveHandlers", e.Message); } }