- TimeSpan now(DateTime::Now().ToTimeSpan());
- while (now<m_NextTask.Front()->At)
- {
- m_NextTask.Front()->Exec();//callback
- ITask* task=m_NextTask.Pop();//entferne aus der todo
- task->At+=task->Frequence;//addiere das Interval drauf, sollte die 3fache Zeit verstrichen sein, dann wird der task halt 3x aufgerufen(gerade bei simulation wichtig)
- m_NextTask.Push(task);//in die todo,der task liegt nicht unbedingt am ende, wegen sortierung
- }
- Thread::Sleep(max(0,(m_NextTask.Front->At-now).TotalMicroSeconds()));//warte garnicht oder die Zeit bis zum nächsten task