2012-05-03 17 views
15

Sto cercando di scoprire quanti thread è in esecuzione la mia applicazione per creare un grafico live della performance. Puoi indicarmi la direzione giusta o fornire un esempio di codice? Grazie!Scopri quanti thread è in esecuzione la mia applicazione?

+0

Vuoi sapere quanti thread hai creato in modo esplicito? O qualsiasi thread .NET potrebbe aver creato anche per tuo conto? –

+3

In che modo sapere quanti thread esistono in relazione alle prestazioni? Sicuramente ciò che è interessante è ciò che stanno facendo questi thread. –

+0

@David Heffernan: stavo cercando di trovare anche un modo per farlo. Principalmente stavo cercando di registrare quanti thread erano nell'applicazione nel tempo per analizzare come il programma stava gestendo la sua generazione/rilascio di thread e speravo di trovare una rima o una ragione sul perché il numero di thread (come mostrato nell'attività manager) sarebbe diventato incredibilmente alto. Quindi questo potrebbe essere correlato alle prestazioni da quel punto di vista. –

risposta

31

Si può prendere uno sguardo alla Threads proprietà del processo in corso:

System.Diagnostics.Process.GetCurrentProcess().Threads 

Naturalmente questo include le discussioni non gestiti pure.

+0

questo include i thread terminati? – clamp

+2

Specificare l'assembly e lo spazio dei nomi per qualcosa che non è incluso di default in un progetto C# renderebbe la risposta più completa. 'Processo' si trova nello spazio dei nomi' System.Diagnostics'. – ThunderGr

+0

@Darin Dimitrove c'è un modo per scoprire che "quale thread appartiene a quale sezione del programma?" – AminM

-2
private static int s_threadCount; 

private static void MyMethod() { 
    Interlocked.Increment(ref s_threadCount); 
    try { 
    ... 
    } finally { 
    Interlocked.Decrement(ref s_threadCount); 
    } 
} 
+4

Questo ti dirà solo il numero di thread in quel particolare metodo, non il numero di thread per il processo nel suo complesso. –

Problemi correlati