/// <summary> /// 将引用归还引用池。 /// </summary> /// <param name="referenceType">引用类型。</param> /// <param name="reference">引用。</param> public static void Release(Type referenceType, IReference reference) { if (referenceType == null) { throw new GameFrameworkException("Reference type is invalid."); } if (!referenceType.IsClass || referenceType.IsAbstract) { throw new GameFrameworkException("Reference type is not a non-abstract class type."); } if (reference == null) { throw new GameFrameworkException("Reference is invalid."); } Type type = reference.GetType(); if (referenceType != type) { throw new GameFrameworkException(string.Format("Reference type '{0}' not equals to reference's type '{1}'.", referenceType.FullName, type.FullName)); } reference.Clear(); lock (s_ReferencePool) { GetReferencePool(referenceType.FullName).Enqueue(reference); } }
public static void Release(Type referenceType, IReference reference) { if (referenceType == null) { } if (!referenceType.IsClass || referenceType.IsAbstract) { } if (reference == null) { } Type type = reference.GetType(); if (referenceType != type) { throw; } reference.Clear(); lock (s_ReferencePool) { GetReferencePool(referenceType.FullName).Enqueue(reference); } }
public void Release(Type referenceType, IReference reference) { reference.Clear(); lock (m_References) { m_References.Enqueue(reference); } m_ReleaseReferenceCount++; m_UsingReferenceCount--; }
public void Despawn(IReference refer) { if (referenceQueue.Count >= ReferencePoolManager._ReferencePoolCapcity) { refer = null; } else { refer.Clear(); referenceQueue.Enqueue(refer); } }
//释放引用 public void Release(IReference reference) { reference.Clear(); lock (m_References) { if (m_References.Contains(reference)) { throw new Exception("[ReferenceCollection.Release] The reference has been released."); } m_References.Enqueue(reference); } ReleaseReferenceCount++; UsingReferenceCount--; }
public void Release(IReference reference) { reference.Clear(); lock (m_References) { if (m_EnableStrickCheck && m_References.Contains(reference)) { throw new FrameworkException("The reference has been released."); } m_References.Enqueue(reference); } m_ReleaseReferenceCount++; m_UsingReferenceCount--; }
public void Release(IReference reference) { reference.Clear(); if (m_References.Contains(reference)) { throw new GameFrameworkException("The reference has been released."); } m_References.Enqueue(reference); m_ReleaseReferenceCount++; m_UsingReferenceCount--; }
public void Release(IReference reference) { reference.Clear(); lock (_references) { if (s_EnableStrictCheck && _references.Contains(reference)) { throw new Exception("The reference has been released."); } _references.Enqueue(reference); } _releaseReferenceCount++; _usingReferenceCount--; }
public void Release(IReference reference) { reference.Clear(); lock (m_References) { if (m_EnableStrictCheck && m_References.Contains(reference)) { Log.Error("The reference has been released."); } m_References.Enqueue(reference); } m_ReleaseReferenceCount++; m_UsingReferenceCount--; }
public void Release(IReference reference) { reference.Clear(); lock (m_References) { if (m_EnableStrictCheck && m_References.Contains(reference)) { throw new System.InvalidOperationException("The reference has been released."); } m_References.Enqueue(reference); } m_ReleaseReferenceCount++; m_UsingReferenceCount--; if (m_UsingReferenceCount < 0) { m_UsingReferenceCount = 0; } }