public void StartDelayedAction(string name, Action action, TimeSpan delay) { DelayedAction da; if (!pending.TryGetValue(name, out da)) { da = new DelayedAction(); pending[name] = da; } da.StartDelayTimer(action, delay); }