Pour une fonction de type «consigner les informations pour le support», je voudrais énumérer et vider les informations sur les threads actifs. Je suis bien conscient du fait que les conditions de course peuvent rendre cette information semi-inexacte, mais je voudrais essayer d'obtenir le meilleur résultat possible, même si ce n'est pas 100% précis.Récupérer la liste des threads gérés actuellement actifs dans .NET?
J'ai regardé Process.Threads, mais il renvoie des objets ProcessThread, j'aimerais avoir une collection d'objets Thread, afin que je puisse enregistrer leur nom, et s'ils sont des threads d'arrière-plan ou non.
Y at-il une telle collection disponible, même si ce n'est qu'un instantané des threads actifs quand je l'appelle?
ie.
Thread[] activeThreads = ??
Remarque, pour être clair, je ne suis pas poser des questions sur Process.Threads, cette collection me donne beaucoup, mais pas tout ce que je veux. Je veux savoir combien de temps les threads nommés spécifiques de notre application utilisent actuellement (ce qui signifie que je devrai regarder la connexion des deux types d'objets plus tard, mais les noms sont plus importants que l'heure du CPU pour commencer.)
Est-ce que 'System.Diagnostics.ProcessThreads' est directement lié à' System.Threading.Threads'? Le premier est un thread OS, où ce dernier est un thread géré. –
Non, ils ne le sont pas. –
Quelles sont les informations supplémentaires de la classe Thread dont vous n'avez pas besoin dans la classe ProcessThread? Un ThreadId du système d'exploitation n'a pas de relation fixe avec un thread géré, car un hôte non géré peut contrôler la relation entre les threads gérés et non gérés. Plus précisément, un hôte sophistiqué peut utiliser l'API CLR Hosting pour planifier de nombreux threads gérés sur le même thread de système d'exploitation ou pour déplacer un thread géré entre différents threads du système d'exploitation. – serhio