static AutoCloseable dm_timerWithFieldSecondsInterval_startNow(S field, Runnable r) { class DaTimer implements Runnable { new Flag cancel; DynModule m = dm_current_mandatory(); Long lastFired = null; run { while (licensed() && !cancel.isUp()) { if (lastFired != null) { long interval = toMS(toDouble(get(m, field))); if (interval <= 0) fail("Need delay > 0: " + field + " in " + m); sleepUntilSysTime(lastFired+interval); } lastFired = sysNow(); if (licensed() && !cancel.isUp()) callF(r); } } } new DaTimer t; startThread(t); ret dm_ownResource(flagAsAutoCloseable(t.cancel)); }