列表变得太大时如何处理OutOfMemoryException?

时间:2011-11-30 23:15:11

标签: c# windows-phone-7 listbox out-of-memory

我的应用程序有两个列表

public ObservableCollection<StreamItemViewModel> SearchStreamItems { get; private set; }
public ObservableCollection<StreamItemViewModel> MyStreamItems { get; private set; }

每个都是一个ListBox的数据源。每次单击按钮more时,应用程序都会加载100个新项目,点击几下就会抛出OutOfMemoryException

有没有办法避免异常?或者我该怎么办?停止加载更多更新?

2 个答案:

答案 0 :(得分:3)

而不是加载所有既不可能也不是真正需要我会使用滑动窗口 - 当你达到某个最大列表大小(比如300项)时你会自动删除前100项当您将下100个项目添加到底部时。

如果您在更新后立即滚动,则用户甚至不会注意到这一点。

答案 1 :(得分:0)

这取决于当它无法加载更多时你想要它做什么。你可以使用像这样的try catch来忽略它:

try
{
    ... load more
}
catch (OutOfMemoryException)
{
    ... ignore or clear out old ones, then call call again
}

或者你可以减少你加载的物体,以便更适合。这取决于您认为应该是允许/接受的行为。