void FlushBlocks()
{
// Write remaining blocks to the disk
mBlockLock.WaitOne();
int archiveEnd = mArchiveMarker + 10000;
List<Block> archive = new List<Block>();
foreach (Block b in mBlocks)
{
if (b.mHeight >= mArchiveMarker && b.mHeight < archiveEnd)
archive.Add(b);
}
WriteArchive(archive);
mBlockLock.ReleaseMutex();
}