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); } } }
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); }