/// <summary> /// /// </summary> /// <param name="tTimer"></param> /// <param name="newIndex"></param> /// <param name="isAdd"></param> /// <returns></returns> public static AIChangeEntry Instance(BaseAIEvent aiEventInfo, bool isAdd) { AIChangeEntry l_AIChangeEntry = null; Monitor.Enter(s_LockAIChangeEntryPool); { if (s_AIChangeEntryPool.Count > 0) { l_AIChangeEntry = s_AIChangeEntryPool.Dequeue(); } } Monitor.Exit(s_LockAIChangeEntryPool); if (l_AIChangeEntry == null) { l_AIChangeEntry = new AIChangeEntry(aiEventInfo, isAdd); } else { l_AIChangeEntry.m_AIEventInfo = aiEventInfo; l_AIChangeEntry.m_IsAddAIEventInfo = isAdd; } return(l_AIChangeEntry); }
/// <summary> /// 添加或修改或移去的时间片 /// </summary> /// <param name="tTimer"></param> /// <param name="newIndex"></param> /// <param name="isAdd"></param> private static void Change(BaseAIEvent aiEventInfo, bool isAdd) { Monitor.Enter(s_LockAIChangeEntryChangeQueue); { // 在ProcessChangeQueue(...)中释放入不使用的列表中 s_AIChangeEntryChangeQueue.Enqueue(AIChangeEntry.Instance(aiEventInfo, isAdd)); } Monitor.Exit(s_LockAIChangeEntryChangeQueue); // 发生事件 s_Signal.Set(); }
/// <summary> /// /// </summary> /// <param name="tTimer"></param> /// <param name="newIndex"></param> /// <param name="isAdd"></param> /// <returns></returns> public static AIChangeEntry Instance( BaseAIEvent aiEventInfo, bool isAdd ) { AIChangeEntry l_AIChangeEntry = null; Monitor.Enter( s_LockAIChangeEntryPool ); { if ( s_AIChangeEntryPool.Count > 0 ) l_AIChangeEntry = s_AIChangeEntryPool.Dequeue(); } Monitor.Exit( s_LockAIChangeEntryPool ); if ( l_AIChangeEntry == null ) l_AIChangeEntry = new AIChangeEntry( aiEventInfo, isAdd ); else { l_AIChangeEntry.m_AIEventInfo = aiEventInfo; l_AIChangeEntry.m_IsAddAIEventInfo = isAdd; } return l_AIChangeEntry; }