【发布时间】:2014-07-01 09:34:13
【问题描述】:
我有一个 LongListSelector,其中包含一个图像控件,该控件可以从网络加载大量图像,这在一段时间内可以正常工作,但是在我加载了一些图像后,我会出现内存不足的异常。我读到其他人有同样的关于内存不足的问题,但仍然没有找到解决方案。我读过它与图像/位图图像缓存有关。
这是包含图像控件的 LongListSelector:
<phone:Pivot Title="MY APPLICATION">
<!--Pivot item one-->
<phone:PivotItem Header="Browse">
<Grid>
<phone:LongListSelector Name="llsGameList" ItemsSource="{Binding}" Tap="llsGameList_Tap" Margin="0,90,0,0">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<Grid>
<Image Name="imgGameList" Margin="0,10,0,10" Stretch="Fill" HorizontalAlignment="Left" VerticalAlignment="Top" Height="200" Width="150">
<Image.Source>
<BitmapImage UriSource="{Binding BoxArtFrontThumb}"
CreateOptions="BackgroundCreation" DecodePixelHeight="200" DecodePixelWidth="150" />
</Image.Source>
</Image>
</Grid>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
</Grid>
</phone:PivotItem>
在我的 MainPage.xaml.cs 中,我设置了 LongListSelector 的 DataContext:
llsGameList.DataContext = gd.GetGamesListItems;
这是我用来存储图像的类:
public class GetGamesList
{
public Uri BoxArtFrontThumb { get; set; }
}
这是包含所有图像的 ObservableCollection:
private ObservableCollection<GetGamesList> _GetGamesListItems = new ObservableCollection<GetGamesList>();
public ObservableCollection<GetGamesList> GetGamesListItems
{
get
{
return this._GetGamesListItems;
}
}
我希望我解释清楚。我真的希望有人可以帮助我解决这个内存问题。谢谢。
【问题讨论】:
-
@KooKiz 方法能彻底解决图片内存缓存问题吗?
-
@KooKiz 哦,我看到你写道,它不能完全消除内存泄漏。有没有办法根本不泄漏任何内存?
-
我不知道。但诀窍在于处理使用更多内存的内容:图片。控件本身使用的内存几乎可以忽略不计
-
好的,谢谢。你能告诉我如何在我的代码中实现它,然后我会将你的答案标记为已接受:)。
标签: c# image windows-phone-8 memory-leaks longlistselector