コード例 #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 DisconnectFromBuffer(ITextBuffer buffer)
 {
     buffer.Changed -= new EventHandler <TextContentChangedEventArgs>(BufferIdleEventUtil.BufferChanged);
     BufferIdleEventUtil.ClearBufferListeners(buffer);
     BufferIdleEventUtil.ClearBufferTimer(buffer);
     buffer.Properties.RemoveProperty(BufferIdleEventUtil.bufferListenersKey);
 }