2010-08-25 12 views
5

Capisco che utilizzando Perfmon.msc è possibile creare un contatore delle prestazioni personalizzato e utilizzando il registro contatore, è possibile scrivere il valore del contatore su un file di testo.Come registrare programmaticamente PerformanceCounter

Capisco anche che posso anche utilizzare questo programma creando un contatore delle prestazioni utilizzando System.Diagnostics.PerformanceCounter e ottenere il valore contatore utilizzando il metodo NextValue(). C'è un modo programmatico per dire all'oggetto PerformanceCounter di scrivere il registro anche in un file di testo (simile al registro contatore perfmon.msc)?

+0

PerfMon ha già la possibilità di pianificare la raccolta di registri su un file in vari formati, per un insieme arbitrario di contatori. – Richard

+0

sì, ma non ho trovato un modo per farlo a livello di programmazione –

risposta

2

L'utilizzo di P/Invoke come suggerito da un altro poster ha dato troppi problemi. Suggerisco di eseguire logman dalla riga di comando utilizzando System.Diagnostics.Process.Start()

4

In .NET è necessario campionare il contatore autonomamente e scrivere il valore campionato in un file. Tuttavia, l'API Win32 ha funzioni per fare ciò che vuoi. Per un esempio dell'API nativa, vedi Writing Performance Data to a Log File. Potresti provare a usare p/invoke per chiamare l'API.

+0

è possibile scrivere quei codici in C# .NET? –

+0

@Louis Rhys: solo se si utilizza la piattaforma invoke (p/invoke) per chiamare l'API dal codice gestito o creare un wrapper C++ gestito attorno all'API. P/invoke è probabilmente più semplice, ma alcune API sono davvero difficili da chiamare in questo modo. Non ho provato personalmente l'API PDH. –

Problemi correlati