/// <summary>
        ///     Removes the first occurance of the specified handler from the
        ///     invocation list of the PreprocessMessage event.
        /// <summary>
        public void RemoveThreadPreprocessMessageHandlerFirst(ThreadMessageEventHandler handler)
        {
            if (_threadPreprocessMessage != null)
            {
                ThreadMessageEventHandler newHandler = null;

                foreach (ThreadMessageEventHandler testHandler in _threadPreprocessMessage.GetInvocationList())
                {
                    if (testHandler == handler)
                    {
                        // This is the handler to remove.  We should not check
                        // for any more occurances.
                        handler = null;
                    }
                    else
                    {
                        newHandler += testHandler;
                    }
                }

                _threadPreprocessMessage = newHandler;
            }
        }
예제 #2
0
 internal static void CriticalRemoveThreadPreprocessMessageHandlerFirst(ThreadMessageEventHandler handler)
 {
     ComponentDispatcher.CurrentThreadData.RemoveThreadPreprocessMessageHandlerFirst(handler);
 }
예제 #3
0
 /// <summary>
 ///     Removes the first occurance of the specified handler from the
 ///     invocation list of the PreprocessMessage event.
 /// <summary>
 internal static void CriticalRemoveThreadPreprocessMessageHandlerFirst(ThreadMessageEventHandler handler)
 {
     ComponentDispatcher.CurrentThreadData.RemoveThreadPreprocessMessageHandlerFirst(handler);
 }
예제 #4
0
 public WeakEventPreprocessMessage(HwndSource source, bool addToFront): base(source)
 {
     _addToFront = addToFront;
     _handler = new ThreadMessageEventHandler(this.OnPreprocessMessage);
     
     if(addToFront)
     {
         ComponentDispatcher.CriticalAddThreadPreprocessMessageHandlerFirst(_handler);
     }
     else
     {
         ComponentDispatcher.ThreadPreprocessMessage += _handler;
     }
 }
        public void RemoveThreadPreprocessMessageHandlerFirst(ThreadMessageEventHandler handler)
        {
            if (_threadPreprocessMessage != null)
            {
                ThreadMessageEventHandler newHandler = null;

                foreach (ThreadMessageEventHandler testHandler in _threadPreprocessMessage.GetInvocationList())
                {
                    if (testHandler == handler)
                    {
                        // This is the handler to remove.  We should not check
                        // for any more occurances.
                        handler = null;
                    }
                    else
                    {
                        newHandler += testHandler;
                    }
                }

                _threadPreprocessMessage = newHandler;
            }
        }
 public void AddThreadPreprocessMessageHandlerFirst(ThreadMessageEventHandler handler)
 {
     _threadPreprocessMessage = (ThreadMessageEventHandler)Delegate.Combine(handler, _threadPreprocessMessage);
 }
 /// <summary>
 ///     Adds the specified handler to the front of the invocation list
 ///     of the PreprocessMessage event.
 /// <summary>
 public void AddThreadPreprocessMessageHandlerFirst(ThreadMessageEventHandler handler)
 {
     _threadPreprocessMessage = (ThreadMessageEventHandler)Delegate.Combine(handler, _threadPreprocessMessage);
 }