예제 #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
        private static void ClearBufferTimer(ITextBuffer buffer)
        {
            DispatcherTimer timer;

            if (!BufferIdleEventUtil.TryGetBufferTimer(buffer, out timer))
            {
                return;
            }
            if (timer != null)
            {
                timer.Stop();
            }
            buffer.Properties.RemoveProperty(BufferIdleEventUtil.bufferTimerKey);
        }