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