public void Execute(Alternation alternation) { if (Value > 0) { var seconds = GetAsUnit(); Timer timer = null; timer = new Timer( (s) => { _timersPool.Remove(timer); alternation.Execute(); }, null, seconds * 1000, Timeout.Infinite); _timersPool.Add(timer); } else { alternation.Execute(); } }