Beispiel #1
0
 public override void Return(T obj)
 {
     if (_policy.Return(obj))
     {
         _pool.Enqueue(obj);
     }
 }
Beispiel #2
0
 public override void Return(TPoolItem item)
 {
     if (_policy.Return(item))
     {
         _ = _innerPool.Return(item);
     }
 }
Beispiel #3
0
 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)
             {
             }
         }
     }
 }
Beispiel #4
0
        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();
 }
Beispiel #8
0
 /// <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);
 }