コード例 #1
0
        private static void RestartTimerForBuffer(ITextBuffer buffer)
        {
            DispatcherTimer timer;

            if (BufferIdleEventUtil.TryGetBufferTimer(buffer, out timer))
            {
                timer.Stop();
            }
            else
            {
                timer = new DispatcherTimer(DispatcherPriority.ApplicationIdle)
                {
                    Interval = TimeSpan.FromMilliseconds(500.0)
                };
                timer.Tick += (EventHandler)((s, e) =>
                {
                    BufferIdleEventUtil.ClearBufferTimer(buffer);
                    HashSet <EventHandler> listeners;
                    if (!BufferIdleEventUtil.TryGetBufferListeners(buffer, out listeners))
                    {
                        return;
                    }
                    foreach (EventHandler eventHandler in listeners)
                    {
                        eventHandler((object)buffer, new EventArgs());
                    }
                });
                buffer.Properties[BufferIdleEventUtil.bufferTimerKey] = (object)timer;
            }
            timer.Start();
        }
コード例 #2
0
        public static bool RemoveBufferIdleEventListener(ITextBuffer buffer, EventHandler handler)
        {
            HashSet <EventHandler> listeners;

            if (!BufferIdleEventUtil.TryGetBufferListeners(buffer, out listeners) || !listeners.Contains(handler))
            {
                return(false);
            }
            listeners.Remove(handler);
            if (listeners.Count == 0)
            {
                BufferIdleEventUtil.DisconnectFromBuffer(buffer);
            }
            return(true);
        }
コード例 #3
0
        public static bool AddBufferIdleEventListener(ITextBuffer buffer, EventHandler handler)
        {
            HashSet <EventHandler> listeners;

            if (!BufferIdleEventUtil.TryGetBufferListeners(buffer, out listeners))
            {
                listeners = BufferIdleEventUtil.ConnectToBuffer(buffer);
            }
            if (listeners.Contains(handler))
            {
                return(false);
            }
            listeners.Add(handler);
            return(true);
        }