/// <summary> /// 回调响应函数 /// </summary> private void Callback_ElapsedEventHandler(object sender, ElapsedEventArgs e) { //查找 Timer aTimer = (Timer)sender; KeyValuePair <int, TIMER_NODE> aTor = m_TimerHandle.First(s => s.Value.aTimer.Equals(aTimer)); //执行回调 TIMER_NODE aTreeNode = aTor.Value; object aObject = aTreeNode.data; aTreeNode.pFunc(sender, e, aTor.Key, ref aObject); //赋值回去 aTreeNode.data = aObject; m_TimerHandle[aTor.Key] = aTreeNode; }
/// <summary> /// 定时器初始化 /// </summary> /// <param name="iMilliSecond">毫秒限制</param> /// <param name="data">可添加的变量</param> /// <param name="pFunc">处理函数</param> /// <param name="iTimerKey">定时器的关键字</param> public void TimerInit(int iMilliSecond, object data, FuncEventHandle pFunc, int iTimerKey = -1) { //新建定时器 Timer aTime = new Timer(iMilliSecond); aTime.Elapsed += Callback_ElapsedEventHandler; aTime.Stop(); //新建节点 TIMER_NODE pNode = new TIMER_NODE(); pNode.aTimer = aTime; pNode.data = data; pNode.pFunc = pFunc; //添加到哈希表句柄中 m_TimerHandle.Remove(iTimerKey); m_TimerHandle.Add(iTimerKey, pNode); }