private void CleanupCallback(Object state)
{
DateTime ExpireTime = DateTime.Now.AddSeconds(-this.Timeout);
lock (this.fCache)
{
foreach (DictionaryEntry entry in this.fCache)
{
ConnectionQueue lQueue = (ConnectionQueue)entry.Value;
Boolean lModified = false;
for (Int32 i = lQueue.UnderlyingArray.Length - 1; i >= 0; i--)
{
if (lQueue.UnderlyingArray[i] == null || lQueue.UnderlyingArray[i].LastUsed >= ExpireTime)
{
continue;
}
lModified = true;
lQueue.UnderlyingArray[i].Dispose();
lQueue.UnderlyingArray[i] = null;
}
if (lModified)
{
lQueue.RemoveNulls();
}
}
}
}