public static int FreeUnusedMemory( )
{
lock ( memoryBlocks )
{
int freedBlocks = 0;
// free all unused memory
for ( int i = currentCacheSize - 1; i >= 0; i-- )
{
if ( memoryBlocks[i].Free )
{
Marshal.FreeHGlobal( memoryBlocks[i].MemoryBlock );
cachedMemory -= memoryBlocks[i].Size;
memoryBlocks.RemoveAt( i );
freedBlocks++;
}
}
currentCacheSize -= freedBlocks;
return freedBlocks;
}
}
}