internal void Update()
{
while (keepGoing)
{
foreach (UpdateTask task in updateTasks.Values)
{
if (task.enabled && task.nextTime < DateTime.Now)
{
task.callback(task.param);
task.nextTime += TimeSpan.FromMilliseconds(task.interval);
}
}
if (requestLockDown)
{
lockDown = true;
tasks.Restart();
requestLockDown = false;
Thread.Sleep(100); // buffer time for all threads to catch up
map.ClearUpdateQueue();
lockDownReady = true;
}
Thread.Sleep(1);
}
}