public void Add( Task callback, object param, bool isPriority ) { if( keepGoing ) { KeyValuePair<Task, object> newTask = new KeyValuePair<Task, object>( callback, param ); if( isPriority ) { lock( priorityQueueLock ) { priorityTasks.Enqueue( newTask ); } } else { lock( queueLock ) { tasks.Enqueue( newTask ); } } } }
void SaveMap(object param) { if (lockDown) { return; } if (map.changesSinceSave > 0) { tasks.Add( delegate { map.changesSinceSave = 0; map.Save(); }, null, false); } }