Esempio n. 1
0
        /// <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);
            }
        }
Esempio n. 2
0
        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--;
 }
Esempio n. 7
0
            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--;
            }
Esempio n. 8
0
            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;
                }
            }