You may use something like
Marker firstVisibleMarker = null;
foreach(Marker m in touchlessMgr.Markers)
firstVisibleMarker = m;
or, using Linq code a litte bit shorter:
Marker firstVisibleMarker = touchlessMgr.Markers.FirstOrDefault(m => m.CurrentData.Present);
Maybe you would also use theforeach variant, adding an "int countVisibleMarkers" and removing the break statement. Then you can call your code only if exactly one marker is detected.
I think using the Marker.Changed event (or, with my Patch, TouchlessMgr.MarkerChanged) and checking if a marker just became present (Marker.CurrentData.Present && !Marker.PreviousData.Present)is thebest-fitting solution here...