I'm developing an app for WP8. In a ScheduledTaskAgent I need to download an image from internet, save it to storage, after that I load the same image and do some processing. I am facing the dreaded OutOfMemoryException. If I remove the "download and save image" (using an already saved image) part, it all works. If I just download and save, it all works. Maybe in the first schedule I can save it, in the second process. But I do not understand where or why my download image is holding memory so, can anyone suggest me a better way to do this? Here is my actual code:
    private async Task GetImage(string url)
    {
        using (var http = new HttpClient())
        {
            var clientResponse = await http.GetByteArrayAsync(url);
            var file = await ApplicationData.Current.LocalFolder.CreateFileAsync(lockFilename, Windows.Storage.CreationCollisionOption.ReplaceExisting);
            using (var fs = await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite))
            {
                var outStream = fs.GetOutputStreamAt(0);
                using (var dataWriter = new Windows.Storage.Streams.DataWriter(outStream))
                {
                    dataWriter.WriteBytes(clientResponse);
                    await dataWriter.StoreAsync();
                    dataWriter.DetachStream();
                    await outStream.FlushAsync();
                    outStream.Dispose(); 
                    fs.Dispose();
                }
            }
        }
    }