Как создать версию категории счетчика производительности?
У меня есть категория счетчика производительности. Счетчики в этой категории могут измениться для моего следующего выпуска, поэтому при запуске программы я хочу проверить, существует ли категория, и это правильная версия - если нет, создайте новую категорию. Я могу сделать это, сохранив GUID в строке справки, но это, очевидно, вонючий. Можно ли сделать это более чисто с помощью .NET API?
Существующая вонючая версия...
if (PerformanceCounterCategory.Exists(CATEGORY_NAME))
{
PerformanceCounterCategory c = new PerformanceCounterCategory(CATEGORY_NAME);
if (c.CategoryHelp != CATEGORY_VERSION)
{
PerformanceCounterCategory.Delete(CATEGORY_NAME);
}
}
if (!PerformanceCounterCategory.Exists(CATEGORY_NAME))
{
// Create category
}
2 ответа:
В нашей системе каждый раз, когда приложение запускается, мы проверяем существующую категорию. Если он не найден, мы создаем категорию. Если она существует, мы сравниваем существующую категорию с тем, что мы ожидаем, и воссоздаем ее (удаляем, создаем), если отсутствуют значения.
var missing = counters .Where(counter => !PerformanceCounterCategory.CounterExists(counter.Name, CategoryName)) .Count(); if (missing > 0) { PerformanceCounterCategory.Delete(CategoryName); PerformanceCounterCategory.Create( CategoryName, CategoryHelp, PerformanceCounterCategoryType.MultiInstance, new CounterCreationDataCollection(counters.Select(x => (CounterCreationData)x).ToArray())); }