Für eine Funktion "Protokollinformationen für Unterstützung" möchte ich aktive Thread-Informationen auflisten und ausgeben.Liste der derzeit aktiven verwalteten Threads in .NET erhalten?
Ich bin mir der Tatsache bewusst, dass Race Conditions diese Information halb-ungenau machen können, aber ich möchte versuchen, das bestmögliche Ergebnis zu erzielen, auch wenn es nicht 100% genau ist.
Ich schaute auf Process.Threads, aber es gibt ProcessThread-Objekte zurück, ich hätte gerne eine Sammlung von Thread-Objekten, so dass ich ihren Namen protokollieren kann, und ob sie Hintergrund-Threads sind oder nicht.
Gibt es eine solche Sammlung, auch wenn es nur ein Schnappschuss der aktiven Threads ist, wenn ich es nenne?
dh.
Thread[] activeThreads = ??
Hinweis, klar zu sein, ich bin nicht über Process.Threads zu fragen, diese Sammlung gibt mir viel, aber nicht alles, was ich will. Ich möchte wissen, wie viel Zeit spezifische benannte Threads in unserer Anwendung derzeit verwenden (was bedeutet, dass ich später die beiden Arten von Objekten betrachten muss, aber die Namen sind wichtiger als die CPU-Zeit).
Sind 'System.Diagnostics.ProcessThreads' direkt mit' System.Threading.Threads' in Verbindung? Ersteres ist ein Betriebssystem-Thread, wobei Letzteres ein verwalteter Thread ist. –
Nein, sind sie nicht. –
Welche zusätzlichen Informationen aus der Thread-Klasse benötigen Sie, die Sie nicht in der ProcessThread-Klasse haben? Ein ThreadId des Betriebssystems hat keine feste Beziehung zu einem verwalteten Thread, da ein nicht verwalteter Host die Beziehung zwischen verwalteten und nicht verwalteten Threads steuern kann. Insbesondere kann ein ausgeklügelter Host die CLR-Hosting-API verwenden, um viele verwaltete Threads für denselben Betriebssystemthread zu planen oder einen verwalteten Thread zwischen verschiedenen Betriebssystemthreads zu verschieben. – serhio