Casper-SC
@Casper-SC
Программист (.NET)

Счётчики производительности Windows NT. Если при старте Windows попытаться удалить счётчики?

Если их удалить, возможно ли потом, что будет вылетать исключение, что в реестре что-то не так и нельзя будет уже снова создать эти же самые счётчики? Я на 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;
        }
  • Вопрос задан
  • 389 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы