This time around, there is a separate class responsible for fetching the images (either from the cache on disk or from the server) and this is called on a background thread (using ThreadPool.QueueUserWorkItem to take care of thread creation) and then freezing the BitmapImage.