internal AsyncScheduler(Action <string> inLogger) { m_LowPriorityWorker = new AsyncWorker(this, AsyncFlags.LowPriority); m_NormalPriorityWorker = new AsyncWorker(this, AsyncFlags.NormalPriority); m_HighPriorityWorker = new AsyncWorker(this, AsyncFlags.HighPriority); Dispatcher = new AsyncDispatcher(); m_WorkUnitPool = new List <AsyncWorkUnit>(StartingPoolSize); for (int i = 0; i < StartingPoolSize; ++i) { m_WorkUnitPool.Add(new AsyncWorkUnit(this)); } m_Stopwatch = new Stopwatch(); m_Logger = inLogger; if (m_Logger != null) { m_LogBuilder = new StringBuilder(256); } #if DEVELOPMENT DebugMode = true; #else DebugMode = false; #endif // DEVELOPMENT }
/// <summary> /// Dispatch any callbacks. /// </summary> internal void DispatchStop(AsyncDispatcher inDispatcher) { #if SUPPORTS_THREADING lock (m_LockContext) { if (m_OnStop != null) { inDispatcher.EnqueueInvoke(m_OnStop); m_OnStop = null; } } #else if (m_OnStop != null) { inDispatcher.EnqueueInvoke(m_OnStop); m_OnStop = null; } #endif // SUPPORTS_THREADING }