我有一个允许用户输入数据的UI,每当用户输入数据时,我就会发出一个事件,说明在这个位置更改了数据并将其放入队列中。我有一个后台线程,通过 waitany waithandle 来监听事件。每次数据更改时,我都会强制对队列中的所有项执行操作。它工作正常。问题是当用户输入两个值时,会有两个更改事件。队列中有两个元素,但第一个事件先获取并立即强制执行某个操作,此时队列中只有一个项目。下一个事件到来,它将处理队列中的下一个项目。 99%的时间进程处理来自队列的一个事件,因为人类数据输入的缓慢是事件处理的坚定性。只是想知道是否有办法,我可以在处理事件周围放一些逻辑等待一点然后处理?
等待句部分
switch(WaitHandle.WaitAny(myhandles))
{
case event.ProcessEvent:
ProcessEvents();
break;
...
}
在流程事件中
private void ProcessEvents()
{
while(eventQueue.Count > 0)
{
//dequeue event
//process the given event
}
}