title: Resizing images on Windows Phone 7 on thread pool thread?
body: <p>I'm writing a Windows Phone 7 app that deals with a lot of images - These images can range from a few hundred pixels up to 1080P (Potentially higher in future).</p>
  
  <p>Images are very resource intensive so I've gone down the path of caching + resizing images on the phone before displaying them.</p>
  
  <p>This means on first time setup after a user has entered the IP address of the image store I can ask them to wait a few minutes while it's all retrieved/resized/cached. From then on they can have nice and snappy performance.</p>
  
  <p>At the moment my cache manager tracks Images by a dictionary of Uri's and file locations. I have a Queue that processes up to 5 images at a time (Async web requests, resizing is semi done on thread pool thread).</p>
  
  <p>The problem I have is that the WritableBitmap class in Silverlight is a UI element, meaning I have to transition to the UI thread via the Dispatcher to do the actual resizing which is stupid and slows the whole thing down - It also means my Cache Manager is effectively single threaded.</p>
  
  <p>So it goes Cache Manager (Thread Pool) -> Async Web request (Thread Pool) -> Callback (Thread Pool) -> Resizing (UI Thread) -> Marking cache job as complete (Thread Pool). </p>
  
  <p>I've been looking for a 3rd party library that will A) Compile and run on Windows Phone 7 and B) Be able to resize images of various formats by manipulating a stream or byte array and not be dependent on the UI thread.</p>
  
  <p>Any one had any experience with this?</p>
  
  <p>Cheers,</p>
  
  <p>Tyler</p>