VS 2005, C # 2.0, .NET 2.0 / 3.0, Win2003
Я пытаюсь установить набор счетчиков производительности для MultiInstance. Я заметил, что некоторым категориям счетчиков производительности системы удается поддерживать " total ", даже когда других экземпляров нет. ASP.NET Apps 2.0.50727 является примером.
Так что я пытался повторить это. Я создал следующую процедуру в классе Installer, который затем добавляю в Custom Action в проекте установки.
public override void Install(System.Collections.IDictionary stateSaver)
{
//Debugger.Break();
CounterCreationData data = new CounterCreationData("ZCounter", "ZCtrHelp", PerformanceCounterType.NumberOfItems32);
PerformanceCounterCategory.Create("ZCategory", "ZCatHelp", PerformanceCounterCategoryType.MultiInstance, new CounterCreationDataCollection(new CounterCreationData[] { data }));
PerformanceCounter counter = new PerformanceCounter();
counter.CategoryName = "ZCategory";
counter.CounterName = "ZCounter";
counter.InstanceName = "ZTotal";
counter.InstanceLifetime = PerformanceCounterInstanceLifetime.Global;
counter.ReadOnly = false;
counter.RawValue = 0;
base.Install(stateSaver);
}
Если я раскомментирую строку Debugger.Break()
и перейду к следующему шагу, я вижу, что счетчик действительно создан с правильным именем экземпляра, и Visual Studio Server Explorer показывает экземпляр вместе с InstanceLifetime, для которого установлено значение Global. Я не вызываю метод RemoveInstance () в программе установки.
Тем не менее, через несколько секунд после завершения программы установки этот экземпляр исчезает из системного монитора и из VS Server Explorer. Как мне заставить его придерживаться? Или я могу?