using System.Collections.Generic; using System.Linq; public class TimerMgr { private IList timerList = new List(); public void Dispose() { timerList.Clear(); } public void Update() { for (int num = timerList.Count - 1; num >= 0; num--) { Timer timer = timerList[num]; timer.Update(); if (timer.IsEnd) { timerList.RemoveAt(num); } } } public void Add(Timer timer) { timerList.Add(timer); } public void Remove(Timer timer) { timerList.Remove(timer); } public void Flush() { foreach (Timer item in timerList.OrderBy((Timer x) => x.RemainTimeSec)) { item.CallEvent(); } timerList.Clear(); } }