Have you tried WritableBitmap? you can return a empty WritableBitmap, start a thread to load your URI, then when the loading is finished, update it back through Dispatcher : writeBitmap.Dispatcher.Invoke(DispatcherPriority.Background, new ThreadStart(delegate { //UI Thread Int32Rect outRect = new Int32Rect(0, (int)(writeBitmap.Height - height) / 2, width, height); writeBitmap.WritePixels(outRect, bits, stride, 0); })); Thats what I did for my FileToIconConverter.
QuickZip