2014-08-28 5 views
0

Я получил следующее исключение для «Эмулятора Windows Phone - WVGA 512 МБ» и моего устройства. Я не понимаю эту проблему при использовании «Эмулятора Windows Phone - WVGA».OutOfMemoryException unhandled

это моя XAML

<phone:Panorama Name="pano" > 


    </phone:Panorama> 

это мой код за

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     if (e.NavigationMode != NavigationMode.Back) 
     { 

      type = NavigationContext.QueryString["type"]; 
      ReadFromXml(type); 
     } 
    } 

    private void ReadFromXml(string type) 
    { 
     XDocument xml=XDocument.Load(@"data/image_saba7.xml"); 


     var query = from c in xml.Root.Descendants("post") 

        select c.Element("image").Value; 
     foreach (var name in query) 
     { 


       createPanoramItem("", name); 

     } 
    } 


    private void createPanoramItem(string tit, string imgurl) 
    { 
     BitmapImage image = new BitmapImage(
      new Uri(imgurl, UriKind.Relative) 
      ); 


     Grid g = new Grid(); 
     Image im = new Image 
     { 

      Source = image, 
      VerticalAlignment = System.Windows.VerticalAlignment.Center, 
      Margin = new Thickness(10, 290,-10, 80), 

     }; 
     img = imgurl; 
     im.Tap += im_Tap; 
     TextBlock t = new TextBlock 
     { 
      TextWrapping = TextWrapping.Wrap, 
      Margin = new Thickness(10, 296, 10, 300), 
      HorizontalAlignment = System.Windows.HorizontalAlignment.Center, 
      TextAlignment = TextAlignment.Right, 
      FontSize = 25, 
      FontWeight = System.Windows.FontWeights.SemiBold, 
      Foreground = new SolidColorBrush(new Color() 
      { 
       A = 255 /*Opacity*/, 
       R = 132 /*Red*/, 
       G = 91 /*Green*/, 
       B = 54 /*Blue*/ 
      }), 
      Text = tit 

     }; 


     g.Children.Add(t); 
     g.Children.Add(im); 

     PanoramaItem panoramaCtrlItem = new PanoramaItem(); 
     panoramaCtrlItem.Content = g; 
     // panoramaCtrlItem.Header = title; 
     pano.Items.Add(panoramaCtrlItem); 
    } 
+0

Почему вы делаете блок 'try' /' catch'? Это ужасная практика. Что происходит, когда вы удаляете его? – Enigmativity

+0

thw такой же проблемой я делаю это, чтобы попытаться решить эту проблему –

ответ

2

Вы используете слишком много оперативной памяти. Вам нужно будет найти способ избавиться от пары предметов в вашей панораме или разработать схему, по которой вы загружаете вещи только по мере их появления, например, загрузите изображение только перед его отображением на экране.

Таким образом, вместо загрузки изображений все сразу загрузите их, когда пользователь проведет влево или вправо. Или выберите число на «страницу» и загрузите столько всего за раз.