Hallo und willkommen,
ich denke, dafür würde sich eine
Queue<T> gut eignen.
Du speicherst dir dadrin jeweils das "Event-Flag" zusammen mit dem aktuellen Zeitstempel und bei jedem Eintreffen eines Events löschst du zuerst alle älteren Einträge (> 10 min) und überprüfst dann für die aktuellen Queue-Elemente deine Bedingungen (evtl. auch in einem festen Zeittakt die älteren Elemente löschen).
Soll das Programm denn dauerhaft laufen (bzw. was passiert bei einem Ausfall) oder aber auch händisch neu gestartet werden können? Dann solltest du diese Daten auch speichern und neu einladen.