private static void BackgroundLoop()
{
while ( !Server.IsShuttingDown ) {
if ( BackgroundTasks.Count > 0 ) {
SchedulerTask task;
lock ( BackgroundTaskListLock ) {
task = BackgroundTasks.Dequeue();
}
task.IsExecuting = true;
#if DEBUG_SCHEDULER
FireEvent( TaskExecuting, task );
#endif
#if DEBUG
task.Callback( task );
#else
try {
task.Callback( task );
} catch ( Exception ex ) {
Logger.LogAndReportCrash( "Exception thrown by ScheduledTask callback", "fCraft", ex, false );
} finally {
task.IsExecuting = false;
}
#endif
#if DEBUG_SCHEDULER
FireEvent( TaskExecuted, task );
#endif
}
Thread.Sleep( 10 );
}
}