2016-06-13 1 views
1

, 나는 주어진 프로세스에 대한 활성 스레드의 총 수를 얻을 수 있습니다 :성능 카운터를 사용하여 프로세스의 실행 스레드 수를 얻는 방법은 무엇입니까? 아래의 코드를 감안할 때

using (var p = Process.GetCurrentProcess()) 
{ 
    Console.WriteLine(p.Threads.Count);  
} 

내가이 PerformanceCounters를 사용하여 지금까지 시도 달성하고자하는 (참조 : https://msdn.microsoft.com/en-us/library/w8f5kw2e(v=vs.110).aspx) :

var category = ".NET CLR LocksAndThreads"; 
var counterOne = "# of current logical Threads"; 
var counterTwo = "# of current physical Threads"; 
var coutnerThree = "# of current recognized threads"; 
var counterFour = "# of total recognized Threads"; 

var perfCounter = new PerformanceCounter(
    category, 
    counterOne, 
    "myProcess") { ReadOnly = true }; 
Console.WriteLine("Thread count: ", perfCounter.NextValue()); 

Process에 의해 반환 된 번호와 일치하지 않습니다. 어떤 도움이라도 대단히 감사합니다.

답변

1

Process.Threads에는 원시 OS 스레드를 포함한 모든 스레드가 포함됩니다. .NET 성능 카운터는 관리되는 스레드 만 반환합니다. Process.Threads과 일치하는 성능 카운터는 \\Process(myProcess)\Thread Count

+0

입니다. 완벽하게 작동합니다 :-) – MaYaN