ユーザーがデータを入力できるようにするUIがあり、ユーザーがデータを入力するたびに、この場所でデータが変更されたことを示すイベントを発生させ、キューに入れます。waithandleとwaitanyでイベントをリッスンするバックグラウンド スレッドがあります。. データが変更されるたびに、キュー内のすべてのアイテムに対してアクションを強制します。それは正常に動作します。問題は、ユーザーが 2 つの値を入力すると、2 つの変更イベントが発生することです。キューに 2 つの要素がありますが、最初のイベントが最初に取得され、すぐにアクションが強制され、その時点でキューには 1 つのアイテムしかありませんでした。次のイベントが来ると、キューから次のアイテムを処理します。人間のデータ入力の遅さ、イベント処理の速さのために、99% の時間、プロセスはキューから 1 つのイベントを処理します。方法があるかどうか疑問に思っているのですが、処理イベントの周りにロジックを配置して、少し待ってから処理できますか?
待機ハンドル部分
switch(WaitHandle.WaitAny(myhandles))
{
case event.ProcessEvent:
ProcessEvents();
break;
...
}
プロセスイベントで
private void ProcessEvents()
{
while(eventQueue.Count > 0)
{
//dequeue event
//process the given event
}
}