0

我有允许用户输入数据的 UI,每次当用户输入数据时,我都会引发一个事件,说数据在这个位置发生了变化并将其放入队列中。我有一个后台线程,它使用waitanywaithandle监听事件. 每次数据更改时,我都会对队列中的所有项目强制执行操作。它工作正常。问题是当用户输入两个值时,会有两个更改事件。队列中有两个元素,但第一个事件首先获得并立即强制执行操作,当时队列中只有一个项目。下一个事件来了,它将处理队列中的下一个项目。99% 的时间进程处理队列中的一个事件,因为人工数据输入的速度很慢,事件处理的速度很快。只是想知道是否有办法,我可以在处理事件周围放置一些逻辑来等待然后处理?

等待句柄部分

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

在进程事件中

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

0 回答 0