2010-08-25 6 views
5

Rozumiem, że za pomocą Perfmon.msc można utworzyć niestandardowy licznik wydajności i za pomocą dziennika licznika można zapisać wartość licznika do pliku tekstowego.Jak programowo rejestrować PerformanceCounter

Rozumiem, że mogę również używać tego programowo, tworząc licznik wydajności za pomocą System.Diagnostics.PerformanceCounter, i uzyskać wartość licznika za pomocą metody NextValue(). Czy istnieje programowy sposób poinformowania obiektu PerformanceCounter o zapisaniu dziennika w pliku tekstowym (podobnie jak w przypadku licznika Zaloguj się perfmon.msc)?

+0

PerfMon ma już możliwość zaplanowania zbierania dzienników do pliku w różnych formatach, dla dowolnego zestawu liczników. – Richard

+0

tak, ale nie znalazłem sposobu, aby to zrobić programowo –

Odpowiedz

2

Używanie P/Invoke, jak sugeruje inny plakat, przysporzyło zbyt wiele kłopotów. Sugeruję uruchomienie logman z wiersza poleceń przy użyciu System.Diagnostics.Process.Start()

4

W .NET będziesz musiał sam spróbować licznik i zapisać próbkowaną wartość do pliku. Jednak interfejs Win32 API ma funkcje, aby robić to, co chcesz. Przykład natywnego interfejsu API można znaleźć pod adresem Writing Performance Data to a Log File. Możesz spróbować użyć p/invoke do wywołania API.

+0

możesz napisać te kody w C# .NET? –

+0

@Louis Rhys: Tylko jeśli użyjesz platformy invoke (p/invoke) do wywołania API z kodu zarządzanego lub utworzenia zarządzanego wrappera C++ wokół API. P/invoke jest prawdopodobnie łatwiejsze, ale niektóre interfejsy API są naprawdę trudne do wywołania w ten sposób. Nie próbowałem samego API PDH. –

Powiązane problemy