private void ReplaceImage() { try { // Explicitly size the control - for use in a background agent this.UpdateLayout(); this.Measure(new Size(480, 800)); this.UpdateLayout(); this.Arrange(new Rect(0, 0, 480, 800)); var wb = new WriteableBitmap(480, 800); wb.Render(LayoutRoot, null); wb.Invalidate(); // Create a filename for JPEG file in isolated storage. String fileName = "Lock_" + Guid.NewGuid().ToString() + ".jpg"; var myStore = IsolatedStorageFile.GetUserStoreForApplication(); using (IsolatedStorageFileStream myFileStream = myStore.CreateFile(fileName)) { // Encode WriteableBitmap object to a JPEG stream. wb.SaveJpeg(myFileStream, wb.PixelWidth, wb.PixelHeight, 0, 75); myFileStream.Close(); } // Delete images from earlier execution var filesTodelete = from f in myStore.GetFileNames("Lock_*").AsQueryable() where f != fileName select f; foreach (var file in filesTodelete) { myStore.DeleteFile(file); } // Fire completion event if (SaveJpegComplete != null) { SaveJpegComplete(this, new SaveJpegCompleteEventArgs(true, fileName)); MessageBox.Show("Lock screen changed!"); } } catch (Exception ex) { // Log it System.Diagnostics.Debug.WriteLine("Exception in SaveJpeg: " + ex.ToString()); if (SaveJpegComplete != null) { var args1 = new SaveJpegCompleteEventArgs(false, ""); args1.Exception = ex; SaveJpegComplete(this, args1); } } }