private void Timer_Elapsed(object sender, ElapsedEventArgs e) { lock (removeList) { TimeModel timeModel = null; foreach (var item in removeList) { idModelDict.TryRemove(item, out timeModel);//移除已经执行过的对象 } removeList.Clear(); } foreach (var item in idModelDict.Values) { if (item.time < DateTime.Now.Ticks) { item.Run(); removeList.Add(item.id);//运行完以后加入移除列表 } } }
public void AddTimeEvent(long delayTime, TimeDelegate timeDelegate) { TimeModel model = new TimeModel(id.Add_Get(), DateTime.Now.Ticks + delayTime, timeDelegate); idModelDict.TryAdd(model.id, model); }