internal void Donate(T entry)
 {
     if (!ReferenceEquals(entry, null) && !AppDomain.CurrentDomain.IsFinalizingForUnload() && PoolHelper.Enter(_id))
     {
         try
         {
             _recycler(entry);
             _entries.Add(entry);
         }
         finally
         {
             PoolHelper.Leave(_id);
         }
     }
 }
Пример #2
0
 internal bool Donate(T entry)
 {
     if (!ReferenceEquals(entry, null) && ReentryGuardHelper.Enter(_id))
     {
         try
         {
             _recycler.Invoke(entry);
             _entries.Add(entry);
             return(true);
         }
         catch (NullReferenceException exception)
         {
             GC.KeepAlive(exception);
         }
         finally
         {
             ReentryGuardHelper.Leave(_id);
         }
     }
     return(false);
 }