System.Net.ConnectionPool.ReclaimEmancipatedObjects C# (CSharp) Method

ReclaimEmancipatedObjects() private method

private ReclaimEmancipatedObjects ( ) : bool
return bool
        private bool ReclaimEmancipatedObjects() {
            bool emancipatedObjectFound = false;
            GlobalLog.Enter("ConnectionPool#" + ValidationHelper.HashString(this) + "::ReclaimEmancipatedObjects");

            lock(m_ObjectList.SyncRoot) {

                object[] objectList = m_ObjectList.ToArray();
                if (null != objectList) {

                    for (int i = 0; i < objectList.Length; ++i) {
                        PooledStream pooledStream = (PooledStream) objectList[i];

                        if (null != pooledStream) {
                            bool locked = false;

                            try {
                                locked = Monitor.TryEnter(pooledStream);

                                if (locked) {
                                    if (pooledStream.IsEmancipated) {

                                        GlobalLog.Print("EmancipatedObject pooledStream#"+ValidationHelper.HashString(pooledStream));
                                        PutConnection(pooledStream, null, Timeout.Infinite);
                                        emancipatedObjectFound = true;
                                    }
                                }
                            }
                            finally {
                                if (locked)
                                    Monitor.Exit(pooledStream);
                            }
                        }
                    }
                }
            }
            GlobalLog.Leave("ConnectionPool#" + ValidationHelper.HashString(this) + "::ReclaimEmancipatedObjects",emancipatedObjectFound.ToString());
            return emancipatedObjectFound;
        }