0

イベントを受信する Windows Delphi アプリケーションがあります。これらのイベントのそれぞれで、タスクを並行して実行したいと思います (次のイベントの準備ができるようにするため)。omn​​ithread ライブラリの抽象化を通じてこれを行う方法はたくさんあります。

問題は、イベントの受信直後にコードの一部を実行する必要があり (基本的にイベントパラメーターを「デコード」するため)、別の部分を数秒後に実行する必要があることです。同じ文脈。この動作は、「この新しい値が 3000 ミリ秒以上続く場合にのみ保存し、それ以外の場合はキャンセルする」に対応する必要があります。したがって、同じコンテキストで新しいイベントが到着した場合、実行中のタスク (3000 ミリ秒待機するタスク) を「キャンセル」する必要があります。最初のステージが終了すると、キャンセルするかどうかを尋ねることなく、2 番目のステージのキューが自動的にいっぱいになるため、パイプラインの抽象化を使用できません。

それは可能ですか?

ありがとうございました。

4

1 に答える 1

1

Dictionary<Context, Event>イベントが「作成された」タイムスタンプ プロパティも保持する場所と、このディクショナリにイベント エントリがあるかどうかを継続的にチェックするバックグラウンド トレッドが必要なようですelapsed time > 3000ms。着信イベントは、スレッドが条件に一致するエントリを検出し、ディクショナリからエントリを抽出するまで、タイムスタンプとイベント パラメータを更新します。

于 2015-02-17T10:24:56.087 に答える