2012-07-17 3 views
7

코드 조각이 있습니다. 여기서 성능 카운터를 만듭니다. ok를 실행합니다. 존재하지 않으면 성능 카운터도 생성되지만 perfmon을 사용할 때이 성능 카운터를 찾을 수 없습니다.내 성능 카운터는 어디에 있습니까? 생성되었지만 perfmon에서 볼 수 없습니다.

현재 무슨 일입니까?

+2

과거 성능 카운터로 실행 한 한 가지 문제점은 실행중인 프로세스가 관리자이거나 성능 카운터를 만들 수있는 특정 권한이 있어야한다는 것입니다. 이것이 일반적으로 런타임 대신 설치 시간에 새로운 성능 카운터가 작성되는 이유입니다. 귀하의 앱에 관리자 권한이없는 경우 어떻게되는지 기억하지 않습니다. 자동으로 카운터를 만들지 못할 수도 있습니다. 비록 그것이 예외를 던질 것이라고 생각할지라도 ... 어쨌든, 아직 앱이 아니라면 관리자 권한으로 실행 해보십시오. – CodingWithSpike

+3

또한 perfmon이 실행되는 동안 카운터를 만드는 경우 perfmon을 다시 시작하여 새 카운터를 인식하도록해야합니다. –

+0

또한 카운터는 즉시 표시되지 않습니다. 때때로 그들을 볼 수있는 데 몇 초가 걸립니다. –

답변

2

예외를받지 못한 이유는 try-catch 블록이 없기 때문입니다. 이

 try 
     {     
      const string _categoryName = "MyPerformanceCounter"; 
      if (!PerformanceCounterCategory.Exists(_categoryName)) 
      { 
       CounterCreationDataCollection counters = 
       new CounterCreationDataCollection(); 

       CounterCreationData ccdWorkingThreads = new CounterCreationData(); 
       ccdWorkingThreads.CounterName = "# working threads"; 
       ccdWorkingThreads.CounterHelp = "Total number of operations executed"; 
       ccdWorkingThreads.CounterType = PerformanceCounterType.NumberOfItems32; 
       counters.Add(ccdWorkingThreads); 

       // create new category with the counters above 
       PerformanceCounterCategory.Create(_categoryName, 
         "Performance counters of my app", 
         PerformanceCounterCategoryType.SingleInstance, 
         counters); 
      }     
     } 
     catch(Exception ex) 
     { 
      MessageBox.Show(ex.ToString()); //Do necessary action 
     } 

같은 시도 및 캐치 블록에 문을 추가하는 경우 다음 그것은 당신이 같은 예외를 참조 exceptions.If을 사로 잡을 것 "요청한 레지스트리에 액세스 할 수 없습니다됩니다." 그런 다음 관리 권한이 필요합니다. 확인하려면 Visual Studio를 관리자 권한으로 실행하고 코드를 실행합니다.

1

Visual Studio를 관리자로 실행하여 범주 생성을 허용하는 것 외에 .NET 코드에서 카운터가 있음을보고했지만 perfmon에 해당 카운터 범주가 표시되지 않았습니다.

분명히 perfmon이 때때로 disable performance counters by flagging it as disabled in the registry 일 것입니다.

check in the registryHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services에서 성능 카운터 범주를 찾을 수 있어야합니다 (카테고리 이름을 "폴더"중 하나로 찾으십시오). 하위 키 ("folder")에서 Performance 레지스트리 값 Disable Performance Counters을 찾아서 0으로 설정하십시오. perfmon을 다시 시작하면 perfmon에서 카테고리와 카운터가 표시됩니다.