J'ai un bouton de dialogue de lancement qui crée un modèle de vue d'une fenêtre et le lie à la fenêtre (la virutalisation de l'interface utilisateur est activée). Cela ne prend que 1 seconde pour lancer le dialogue au premier clic. Mais si j'ouvre la même boîte de dialogue très fréquemment ou l'une après l'autre, cela prend plus de temps pour remplir la source de données de la grille pour l'itération suivante. si je donne une pause, puis à nouveau ouvrir la fenêtre, alors cela ne prend qu'environ 1 ou 2 secondes.Problème de performances lors de l'ouverture répétée d'une boîte de dialogue dans wpf
for first time populating the item source it take only 1 second:
next time populating the item source it takes 2 second
next time populating the item source it takes 3 second
next time populating the item source it takes 6 second
next time populating the item source it takes 8 second
Cependant, si je l'appelle GC.Collect() qui n'est pas recommandé, puis peuplant source de données de la grille prend toujours environ 1 seconde. mais l'appel de
Gc.Collect()
Gc.WaitForPendingFinalizer()
Gc.Collect()
m'a coûté du temps pour chaque itération.
Je sais que l'appel GC.Collect
n'est pas une bonne option. Quelqu'un peut-il suggérer comment puis-je améliorer les performances de mon application.
Je suis plus préoccupé par la machine de l'utilisateur que ma machine est avec une très bonne configuration alors que la machine de l'utilisateur peut ne pas si rapide.
Pourquoi est-ce que cela prend plus de temps pour ouvrir la boîte de dialogue à chaque fois? Peut-être que vous chargez trop de données. Pensez à [utiliser pagination] (http://stackoverflow.com/questions/784726/how-can-i-paginate-a-wpf-datagrid) (dans la grille et dans votre requête sql). –
Peut-être que vous avez besoin de '.Dispose' de certaines ressources avant de fermer la boîte de dialogue? –
Tim, je ne comprends pas non plus. probablement que je manque quelque chose mais je ne sais pas quoi.Alors chercher des erreurs possibles –