8
votes

WPF temporaire Gel d'affichage

J'ai une application WPF autonome fonctionnant sur .NET 3.5. Chaque si souvent, l'affichage se fige simplement pendant plusieurs secondes. Ceci est plus visible sur les écrans où quelque chose est souvent mis à jour. Voici une vidéo montrant le problème.

Alors que l'affichage est gelé, l'interface reste sensible ( vidéo ).

Je suis venu dans d'autres messages avec des problèmes similaires qui ont attribué à un problème de rendu SW / HW. Pour être sûr, je HW désactivé tout à fait rends, mais toujours le problème.

J'ai couru un moniteur de fichiers pendant les gels pour voir s'il y a un accès aux fichiers extraordinaire ou d'une activité en cours, mais rien ne sort de l'ordinaire.

Note finale: La plate-forme cible est un petit panneau écran tactile PC sans beaucoup de mémoire ou de puissance (512 Mo). Je ne vois que cette question sur la cible , jamais sur mon PC de développement, qui a beaucoup plus de la manière des ressources.

UPDATE

Je pensais avoir résolu le problème en supprimant un code d'animation, mais cela n'a pas fonctionné. Je rencontre toujours le problème et je suis à la fin de ma corde.

Voici quelques autres choses que j'ai essayé:

  • Mise à jour vers .NET 4.0. Même comportement.
  • Code de débogage Ajouté à toutes les méthodes qui peuvent être invoquées par DispatcherTimer (qui sont appelés sur le thread d'interface utilisateur) pour vous assurer qu'aucun d'entre eux se maintiennent l'interface utilisateur.

    Je suis vraiment déconcerté ici et nous avons ajouté une prime. Comme je l'ai mentionné, le problème ne se produit que sur le PC cible ( lien ) .


2 commentaires

Quelle est votre carte d'exploitation et de votre carte vidéo?


@Fractalizer - Ceci est le PC, mais j'utilise une image standard intégrée Windows personnalisée. ICPamerica.com/products/LCD_PRODUCTS/EMBEDDED_PANEL_PC/...


3 Réponses :


1
votes

Avez-vous essayé de profiler l'application sur le système testé? En utilisant un profileur de mémoire et / ou de performance?

Vous pouvez obtenir de bonnes informations sur ce type de test: Profilers .NET Et voici un pour WPF: PROFILER WPF de Microsoft


0 commentaires

2
votes

J'ai tendance à suspecter .NET GC ou Swapfile OS lorsque ce type de comportement apparaît.

Pour le premier, vous pouvez essayer les compteurs de performance .NET pour surveiller l'activité suspecte.

Si l'appareil dispose d'un fichier de swap, vous pouvez le désactiver et voir si le comportement change.

Comme d'autres l'ont dit, un profileur (ou une partie de l'isolement de la condition induisant le retard - même juste attacher et enfreindre le débogueur lorsqu'il se produit) serait un bon moyen d'obtenir plus d'informations.


2 commentaires

J'ai exécuté certains outils de performance pendant que le comportement est exposé et n'a rien trouvé de l'ordinaire (profileur de performance des fourmis et perforateur). Je vais vérifier la situation du fichier d'échange. Je n'ai pas de place pour Visual Studio sur la cible, je vais donc devoir passer du débogage à distance.


J'ai oublié que le PC cible utilise compact flash. L'utilisation du flash pour la pagination n'est pas recommandé, je suis tout à fait éteint la pagination.



1
votes

Le coupable était l'appel de méthode suivant:

new HwndSource(new HwndSourceParameters());


0 commentaires