Как ждать, пока пользователь завершит ввод данных, перед обработкой с помощью waithandle

У меня есть пользовательский интерфейс, который позволяет пользователю вводить данные, каждый раз, когда пользователь вводит данные, я вызываю событие, говоря, что данные изменились в этом месте, и помещаю их в очередь. У меня есть фоновый поток, который слушает события с помощью waithandle с waitany. Каждый раз, когда данные меняются, я заставляю действие для всех элементов в очереди. Работает нормально. Проблема в том, что когда пользователь вводит два значения, будет два события изменения. Два элемента в очереди, но первое событие получает первое и немедленно вызывает действие, и в то время в очереди был только один элемент. Приходит следующее событие, оно будет обрабатывать следующий элемент из очереди. 99% времени процесс обрабатывает одно событие из очереди из-за медленного ввода человеческих данных и скорости обработки события. Просто интересно, есть ли способ, я мог бы поместить некоторую логику вокруг события обработки, чтобы немного подождать, а затем обработать?

Часть ручки

switch(WaitHandle.WaitAny(myhandles))
{
   case event.ProcessEvent:
        ProcessEvents();
        break;
   ...
}

В процессе события

private void ProcessEvents()
{
  while(eventQueue.Count > 0)
  {
     //dequeue event
     //process the given event
  }
}

0 ответов

Другие вопросы по тегам