Dans mon application C# WPF, j'ai une liste d'objets avec environ 900000 entrées.WPF ListView avec de nombreuses entrées: System.OutOfMemoryException
Je souhaite afficher ces entrées dans une vue de liste. Pour cela je crée une nouvelle fenêtre comme ceci:
System.Windows.Window myWin = new System.Windows.Window();
myWin.Content = new myResult();
myWin.Title = "Result";
myWin.Show();
La liste est stockée dans le ViewModel. Le XAML ressemble:
<ListView
x:Name="myListView"
ItemsSource="{Binding ListSummary}"
>
<ListView.View>
...
Au cours de la ligne myWin.Show()
le gel du programme et des spectacles suivants exception:
Ein Ausnahmefehler des Typs "System.OutOfMemoryException" ist in PresentationCore.dll aufgetreten.
Y at-il une limitation des entrées pour le listview? Je sais que 900 000 entrées semblent être beaucoup, mais c'est le nombre commun d'entrées dans mon analyse de rentabilisation.
Apparemment, vous n'avez pas assez de mémoire pour gérer autant d'éléments. Assurez-vous que vous n'avez pas désactivé la virtualisation de l'interface utilisateur. – mm8
Peut-être qu'il y a plus d'un problème. Jetez un coup d'oeil ici: https://stackoverflow.com/questions/5326904/finding-the-true-memory-footprint-of-a-windows-application/5407911#5407911 –
Il est peut-être temps de commencer à paginer/des données hiérarchiques/[ "ne montrez pas toute la technique" ici]. Peu importe ce que sont ces 900 000 éléments, un utilisateur n'aura jamais besoin de les examiner tous au cours d'un seul programme (supposé que le programme ne fonctionne pas éternellement sans redémarrage). Votre meilleur choix est de comprendre ce que l'utilisateur sera recherche en fait quand il commence à faire défiler cette liste ridiculement énorme d'articles. – grek40