2010-08-25 13 views
5

Entiendo que con Perfmon.msc puede crear un contador de rendimiento personalizado y utilizando el registro de contador, puede escribir el valor del contador en un archivo de texto.Cómo registrar programáticamente PerformanceCounter

También entiendo que también puedo usar esto programáticamente creando un contador de rendimiento usando System.Diagnostics.PerformanceCounter, y obtengo el valor del contador usando el método NextValue(). ¿Existe alguna manera de programar el objeto PerformanceCounter para escribir también el registro en un archivo de texto (similar al Registro de contador en perfmon.msc)?

+0

PerfMon ya tiene la capacidad de programar la recopilación de registros en un archivo en varios formatos, para un conjunto arbitrario de contadores. – Richard

+0

sí, pero no encontré la manera de hacerlo programáticamente –

Respuesta

2

El uso de P/Invoke, como lo sugirió otro cartel, causó demasiados problemas. Sugiero ejecutar logman desde la línea de comandos usando System.Diagnostics.Process.Start()

4

En .NET tendrá que muestrear el contador usted mismo y escribir el valor muestreado en un archivo. Sin embargo, la API Win32 tiene funciones para hacer lo que quieras. Para ver un ejemplo de la API nativa, ver Writing Performance Data to a Log File. Podría intentar usar p/invoke para llamar a la API.

+0

¿Puedes escribir esos códigos en C# .NET? –

+0

@Louis Rhys: solo si usa la invocación de plataforma (p/invoke) para llamar a la API desde el código administrado o crear un contenedor administrado de C++ alrededor de la API. P/invoke es probablemente más fácil, pero algunas API son realmente difíciles de llamar de esa manera. No he probado la API PDH yo mismo. –

Cuestiones relacionadas