Thanks for you reply.
Just to make sure I understand it correctly:
In my example I use OpenStreetMapOverlay and because I want to store the tiles in a specific location I assign a FileBitmapTileCache to it.
I do not create the cache up front but instead it is filled up as the user navigates around the world, so I cannot set TileAccessMode to ReadOnly.
So I use ReadAddDelete and from your example and what I have tried I can see that tiles are updated depending on what I set ExpirationTime to.
So e.g. setting ExpirationTime to 30 seconds and then after 31 seconds I pan/zoom so a tile is reloaded and then the file is updated in the cache.
And in that case tiles (that are never used) will never be deleted, correct?
To delete the entire cache I will just have to implement my own logic to see when/if the layer is used.