Memory management in window phone 8

0

My app need to load image from web each time with provided category and it is working, the problem is memory, Image loaded in memory not being remove when next category image load and hence memory increases and the app closing with the following message-

The program '[4036] TaskHost.exe' has exited with code -2005270523 (0x887a0005).

The code is ---

void webClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) { if (e.Error != null) { timer.Stop(); return; } List rootobj = JsonConvert.DeserializeObject>(e.Result);

     int c = 0, x = 0;
        for (int i = 0; i < rootobj.Count; i++)
        {
            Image img = new Image();
            img.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
            img.VerticalAlignment = System.Windows.VerticalAlignment.Top;
            img.Height = 160;
            img.Width = 210;
            img.Stretch = System.Windows.Media.Stretch.Fill;


            BitmapImage bit = new BitmapImage();
            string path = rootobj.ElementAt(i).ThumbnailUrl;
            bit.UriSource = new Uri(path,UriKind.RelativeOrAbsolute);
            img.Source = bit;
   img.Margin = new Thickness(x, y, 0, 0);


            c++;
            if (c == 2)
            {
                x = 0;
                y = y + 160;
                c = 0;
            }
            else
            {
                x = x + 210;
            }
            mainGrid.Children.Add(img);  
        } mainGrid.Children.Add(grid);
       }

and to remove i had tried these--

        for (int i = 0; i < rootobj.Count; i++)
        {
            Image image = (Image)mainGrid.Children.ElementAt(i);
            BitmapImage bitmapImage = image.Source as BitmapImage;
            bitmapImage.UriSource = null;
            image.Source = null;
            bitmapImage = null;
            image = null;
        }

        grid.Children.Clear();

        mainGrid.Children.Remove(grid);

But it still crashes after few type of image selected.

memory-management
windows-phone-8
asked on Stack Overflow Mar 11, 2013 by Abhishek • edited Mar 11, 2013 by Abhishek

1 Answer

0

you can do something like the following :

grid1.Children.Remove(image1);
image1 = null;
answered on Stack Overflow Mar 11, 2013 by Ahmed Emad

User contributions licensed under CC BY-SA 3.0