public override void Return(T obj) { if (_policy.Return(obj)) { _pool.Enqueue(obj); } }
public override void Return(TPoolItem item) { if (_policy.Return(item)) { _ = _innerPool.Return(item); } }
public void Return(T obj) { if (_policy.Return(obj)) { if (_firstItem != null || Interlocked.CompareExchange(ref _firstItem, obj, null) != null) { var items = _items; for (var i = 0; i < items.Length && Interlocked.CompareExchange(ref items[i], obj, null) != null; ++i) { } } } }
public override void Return(T obj) { if (!_policy.Return(obj)) { return; } for (var i = 0; i < _items.Length; i++) { if (Interlocked.CompareExchange(ref _items[i], obj, null) == null) { return; } } }
public override void Return(T obj) { if (!_policy.Return(obj)) { return; } for (var i = 0; i < _items.Length; i++) { if (_items[i] == null) { _items[i] = obj; return; } } }
public override bool Return(WeakReference <T> obj) { return(!obj.TryGetTarget(out var value) || _policy.Return(value)); }
public override void Dispose() { _channel.Close(); _provider.Return(_channel); base.Dispose(); }
/// <summary> /// Return the object to pool, return of supplied policy will be used. /// Return is called Fire & Forget way, due to expensive nature of disposing com object. /// </summary> /// <param name="obj"></param> public override void Return(Application obj) { Task.Run(() => _policy.Return(obj)).ConfigureAwait(false); }