【发布时间】:2014-07-03 13:52:25
【问题描述】:
我的 win8.1 c# 应用程序遇到问题。
问题在于 ListView 和数千个项目的性能,所以,我已经实现了 IncrementalUpdate,它提高了性能,但每次加载页面时都会变得更糟。我将描述我的应用场景,欢迎任何可能的解决方案。
我在应用缓存中有一个包含大约 10000 个对象的列表(应用缓存是我创建的一个静态类,用于存储这些数据,而不是一直从数据库中检索它)
页面的列表视图非常简单,并且有一个与之关联的数据模板,我没有使用 DataTemplateSelector 或其他东西。
列表的绑定在页面的构造函数上,所以我引用的每个 NavigateTo 都会显示数据的页面将重新绑定列表。
我反复导航到页面并返回(NavigatoTo / GoBack)并且列表运行良好且性能良好,因此,在做同样的事情一段时间后,列表的性能开始显着下降并且列表中的元素开始变慢。
我已经尝试分析内存使用情况和用于绑定列表的项目数,它始终相同,没有增加或减少,因为对象与它在 App Load 上的内存中相同.
我只是想多了解一下这个性能问题,因为在我的概念中,当您在页面上执行 GoBack 时,所使用的所有资源都将被 GC 所用,在内存使用跟踪中我可以看到调用GC,但是如果 GC 正在释放资源,并且它一直在使用 NavigateTo 创建的页面,为什么我的应用会发生这种情况?
这是 ListView 的定义:
<ListView Grid.Row="1"
Grid.ColumnSpan="2"
x:Name="listViewProduto"
IsSwipeEnabled="False"
ShowsScrollingPlaceholders="False"
ItemContainerStyle="{StaticResource BlinkListViewItemStyle}"
Tapped="ListViewProduto_Tapped" Loaded="listViewProduto_Loaded">
</ListView>
这里是绑定方法:
listViewProduto.ItemsSource = produtos;
listViewProduto.ItemTemplate = Application.Current.Resources["dataTemplateProduto"] as DataTemplate;
listViewProduto.SelectedIndex = -1;
【问题讨论】:
标签: c# performance listview memory windows-runtime