コード例 #1
0
        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);
            }
        }
コード例 #2
0
        /// <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);
            }
        }