Ejemplo n.º 1
0
        public void ReleaseConnection(Driver driver)
        {
            lock ((inUsePool as ICollection).SyncRoot)
            {
                if (inUsePool.Contains(driver))
                    inUsePool.Remove(driver);
            }

            if (driver.ConnectionLifetimeExpired() || beingCleared)
            {
                driver.Close();
                Debug.Assert(!idlePool.Contains(driver));
            }
            else
            {
                lock ((idlePool as ICollection).SyncRoot)
                {
                    EnqueueIdle(driver);
                }
            }

            Interlocked.Increment(ref available);
            autoEvent.Set();
        }