Comment puis-je déterminer le nombre de poignées de fenêtre d'une application à l'aide?
Quelle est la meilleure façon de déterminer combien de poignées de fenêtre d'une application à l'aide? Est-il un outil ou un compteur de performance WMI que je pourrais utiliser?
Je voudrais lancer une app et regarder un compteur de certains de tri et de voir que le nombre de poignées de fenêtre est à la hausse.
for (int i=0; i < 1000; i++)
{
System.Threading.Thread.Sleep(1000);
RichTextBox rt = new RichTextBox();
rt.Text = "hi";
this.Controls.Add(rt);
}
J'exécute le code ci-dessus et de regarder les "handles" compteur sur le processus, et il ne semble pas être en augmentation. Est-il quelque chose que je suis en train de regarder de manière incorrecte?
OriginalL'auteur adeel825 | 2008-10-13
Vous devez vous connecter pour publier un commentaire.
Perfmon, qui est livré avec votre ordinateur peut le faire. Vous pouvez également ajouter une colonne à votre gestionnaire des tâches, onglet processus (handles).
Instructions pour Perfmon
Pour obtenir le graphique de la gamme, vous avez à droite-cliquez dessus dans la liste, choisissez propriétés, puis choisissez l'échelle de droite (.1 ou .01 serait probablement à droite)
Modifier (en réponse à l'apport d'informations): je pense que vous venez de prouver que la création d'RichTextBoxes n'entraîne pas de Poignées en cours d'attribution. Je ne pense pas qu'il a vraiment besoin d'un jusqu'à ce que vous modifiez le contrôle et il peut être assez intelligents pour le faire, puisque l'allocation de trop de ressources pour un contrôle qui n'est pas active, il serait difficile d'avoir beaucoup de contrôle sur un formulaire (Excel, par exemple).
Je ne suis pas vraiment sûr de ce que vous essayez de faire. Je pense que cet appel GlobalAlloc va augmenter le nombre de handles. Voici la déclaration que vous avez besoin: network.programming-in.net/articles/art9-1.asp?f=GlobalAlloc
vers 2016, gérer le compte n'est pas dans le gestionnaire des tâches, onglet processus plus (pour Windows 10). ce n'est pas grâce à Microsoft.
OriginalL'auteur Lou Franco
Le Moniteur De Processus est très pratique interactive sur le suivi de toutes sortes de ressources utilisées par les processus Windows.
Remarque - si tu veux trouver l'information par programmation, .Net donne accès à tous les compteurs de performance. Vous utilisez le Système.Diagnostics.PerformanceCounter Classe comme ceci:
OriginalL'auteur gimel
Le nombre de handles indiqué par le gestionnaire de tâches est le même que celui affiché par l'analyseur de performances
ProcessExplorer outil de sysinternals pouvez lister les différents type de poignées + leurs noms d'un processus, et vous pouvez obtenir une bonne idée en parcourant cette liste, sur la composition des poignées de votre programme.
Mais je crains que ce ne est ces type de poignée qui compte pour vous.
Pour afficher les poignées réelles et de leurs types à l'aide de ProcessExplorer - Affichage - afficher le volet inférieur de la vue - des poignées.
Vous pouvez également utiliser une sorte de fenêtre espion outil qui affiche toutes les fenêtres dans le système comme Microsoft spy++ ou Gérés Spy++ (http://msdn.microsoft.com/en-us/magazine/cc163617.aspx)
Cela vous permettra de voir si vos fenêtres sont en cours de création.
OriginalL'auteur computinglife
Perfmon ou le Gestionnaire des Tâches ne peut pas vous donner le nombre de poignées de FENÊTRE utilisée par un processus que le nombre total de descripteurs de tous types (fichier, fil, etc...).
La meilleure information que je peux trouver sur le sujet est cette post qui indique que la poignée de la fenêtre de comptage pour un processus peut être déterminée par l'énumération de tous les enfants de windows de la fenêtre.
OriginalL'auteur user24770