我正在尝试将一些(HD)照片绑定(bind)到LongListSelector,如您在此处看到的:
<phone:LongListSelector
Name="Photos"
LayoutMode="Grid"
ItemsSource="{Binding Items}"
GridCellSize="225, 225"
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<Grid>
<Image Name="Photo"
Source="{Binding Source}"
</Grid>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
foreach (string item in resultList)
{
u = new Uri(item, UriKind.RelativeOrAbsolute);
this.Items.Add(new DataItemViewModel() { Source = u});
}
});
但是每次我回到主页并单击以重新开始时(带有新照片/不同照片),ApplicationPeakMemoryUsage只会一直增加,直到应用程序终止为止...
很抱歉,这是一个基本问题,但我是C#的新手。
有什么提示吗?
(也许是当用户单击“后退”按钮时处置LongListSelector或整个页面的一种方法)
谢谢你。
最佳答案
上次遇到此问题时,我使用了IDipose模式。我遇到的问题是在使用第三方dll时,CLR没有从dll中清除对象。
在实现IDispose模式之后,无论何时使用该特定对象,我都会将其放入“using”语句中,以确保在“using”语句作用域的末尾对其进行处理。有关using语句的更多信息:http://www.dotnetperls.com/using
为了使我首先意识到这一点,我调试了代码并观看了任务管理器。在代码的开头创建一个断点,然后打开任务管理器,然后单击“进程”选项卡。
在您认为问题可能出在某些地方之后,请注意内存使用量大量增加的地方。
完成此操作后,请尽快与我联系。
希望对您有所帮助,如果没有任何帮助,请尽快与我联系:)
关于c# - 内存泄漏: MVVM and photos on a LongListSelector (WP8),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23934523/