Если их удалить, возможно ли потом, что будет вылетать исключение, что в реестре что-то не так и нельзя будет уже снова создать эти же самые счётчики? Я на MSDN вычитал, что
не рекомендуется создавать счётчики при старте винды.
Или может, когда счётчики ещё не проинициализированы, то их нельзя удалять? Я так понял, что, возможно, произошло следующее: загрузилась ОС, моё приложение попыталось при старте службы (приложение моё) удалить счётчики, и получилось это сделать, но, видимо, как-то не до конца?
Вот такая ошибка вылетает при попытке удалить счётчики производительности.
25 Jun 2016 10:00:00.5727|Error|Monitoring|||Execute|Параметр реестра имеет неверное значение| в System.Diagnostics.PerformanceCounterLib.RegisterFiles(String arg0, Boolean unregister)
в System.Diagnostics.PerformanceCounterLib.UnregisterCategory(String categoryName)
в System.Diagnostics.PerformanceCounterCategory.Delete(String categoryName)
в PerformanceMonitor.PerformanceCategory.DeleteIfExists()
в PerformanceMonitor.MonitoringDispatcher.Initialize(Boolean recreateExistingCategories)
в CustomServer.Threads.Monitoring.Execute()
Это мои классы:
CustomServer.Threads.Monitoring
PerformanceMonitor.PerformanceCategory
Вот так создаются и удаляются счётчики:
_
public bool DeleteIfExists()
{
if (PerformanceCounterCategory.Exists(Name))
{
PerformanceCounterCategory.Delete(Name);
return true;
}
return false;
}
public bool CreateIfNotExists()
{
if (!PerformanceCounterCategory.Exists(Name))
{
var counters = new CounterCreationDataCollection();
foreach (PerformanceSet set in this.counterSets)
{
foreach (CounterCreationDataExt creationData in set.CounterCreationData)
{
counters.Add(creationData);
}
}
PerformanceCounterCategory.Create(Name, Description, CategoryType, counters);
return true;
}
return false;
}