2012-05-03 13 views
15

Próbuję dowiedzieć się, ile wątków jest uruchomionych przez moją aplikację, aby utworzyć wykres wydajności na żywo. Czy możesz wskazać mi właściwy kierunek lub podać przykład kodu? Dzięki!Dowiedz się, ile wątków obsługuje moja aplikacja?

+0

Chcesz wiedzieć, ile wątków zostało jawnie utworzonych? Czy też wątki .NET mogły również zostać utworzone w Twoim imieniu? –

+3

Jak wiedza, ile wątków istnieje, ma związek z wydajnością? Z pewnością interesujące jest to, co robią te wątki. –

+0

@ David Heffernan: Próbowałem znaleźć sposób na zrobienie tego również. Głównie chciałem zanotować, ile wątków było w aplikacji w czasie, aby przeanalizować, w jaki sposób program obsługiwał generowanie/zwalnianie wątków i miałem nadzieję znaleźć rym lub przyczynę, dlaczego liczba wątków (jak pokazano w zadaniu menedżer) rośnie absurdalnie wysoko. Może to być związane z wydajnością z tego punktu widzenia. –

Odpowiedz

31

Można spojrzeć na miejscu obecnego procesu Threads:

System.Diagnostics.Process.GetCurrentProcess().Threads 

Oczywiście obejmuje to niezarządzanymi wątki, jak również.

+0

czy obejmuje to wątki zakończone? – clamp

+2

Określenie zespołu i przestrzeni nazw dla czegoś, co nie jest domyślnie uwzględnione w projekcie C#, sprawiłoby, że odpowiedź jest bardziej kompletna. "Proces" znajduje się w przestrzeni nazw 'System.Diagnostics'. – ThunderGr

+0

@ Dinar Dimitrove czy istnieje sposób, aby dowiedzieć się, że "Który wątek należy do której sekcji programu?" – AminM

-2
private static int s_threadCount; 

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

To by powiedzieć tylko liczbę wątków w tej konkretnej metodzie, a nie liczbę wątków dla procesu jako całości. –

Powiązane problemy