Как ждать, пока пользователь завершит ввод данных, перед обработкой с помощью 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
}
}