/// <summary> /// Создать внутренний счётчик на основе существующего счётчика Windows /// </summary> /// <param name="src">Счётчик Windows</param> /// <param name="info">Информацию по функционированию</param> /// <returns>Созданный внутренний счётчик</returns> public static Counter CreateByExistedCounter(PerformanceCounter src, WinCountersWorkingInfo info) { CounterTypes reqType; if (!TryConvertCounterType(src.CounterType, out reqType)) { return(null); } return(CreateCounter(reqType, src.CounterName, src.CounterHelp, info)); }
/// <summary> /// Создать внутренний счётчик на основе существующего счётчика Windows и инициализировать его /// </summary> /// <param name="src">Счётчик Windows</param> /// <param name="info">Информацию по функционированию</param> /// <returns>Созданный и инициализированный внутренний счётчик</returns> public static Counter CreateByExistedCounterAndInit(PerformanceCounter src, WinCountersWorkingInfo info) { var res = CreateByExistedCounter(src, info); if (res == null) { return(null); } ((IWinCounterInitialization)res).CounterInit(src.CategoryName, src.InstanceName); return(res); }
/// <summary> /// Создать категорию с множеством инстансов. /// Конкретный тип определяется на основе wrkInfo. /// </summary> /// <param name="categoryName">Имя категории</param> /// <param name="categoryDescription">Описание категории</param> /// <param name="rootName">Корневое имя</param> /// <param name="wrkInfo">Информация по функционированию</param> /// <returns>Созданная категория</returns> public static WinMultiInstanceCategory CreateMultiInstanceCategory(string categoryName, string categoryDescription, string rootName, WinCountersWorkingInfo wrkInfo) { if (wrkInfo.InstantiationMode == WinCountersInstantiationMode.UseOnlyExisted) { return(new UseOnlyExistedWinMultiInstanceCategory(categoryName, categoryDescription, rootName, wrkInfo)); } return(new RecreateWinMultiInstanceCategory(categoryName, categoryDescription, rootName, wrkInfo)); }
/// <summary> /// Создать пустую категорию /// </summary> /// <param name="categoryName">Имя категории</param> /// <param name="categoryDescription">Описание категории</param> /// <param name="rootName">Корневое имя</param> /// <param name="wrkInfo">Информация по функционированию</param> /// <returns>Созданная категория</returns> public static WinEmptyCategory CreateEmptyCategory(string categoryName, string categoryDescription, string rootName, WinCountersWorkingInfo wrkInfo) { return(new WinEmptyCategory(categoryName, categoryDescription, rootName, wrkInfo)); }
/// <summary> /// Создать дескриптор счётчика /// </summary> /// <param name="type">Тип счётчика</param> /// <param name="counterName">Имя счётчика</param> /// <param name="counterDescription">Описание счётчика</param> /// <param name="info">Информацию по функционированию</param> /// <returns>Созданный дескриптор</returns> public static WinCounterDescriptor CreateCounterDescriptor(CounterTypes type, string counterName, string counterDescription, WinCountersWorkingInfo info) { switch (type) { case CounterTypes.NumberOfItems: return(WinNumberOfItemsCounter.CreateDescriptor(counterName, counterDescription, info)); case CounterTypes.Delta: return(WinDeltaCounter.CreateDescriptor(counterName, counterDescription, info)); case CounterTypes.AverageTime: return(WinAverageTimeCounter.CreateDescriptor(counterName, counterDescription, info)); case CounterTypes.AverageCount: return(WinAverageCountCounter.CreateDescriptor(counterName, counterDescription, info)); case CounterTypes.OperationsPerSecond: return(WinOperationsPerSecondCounter.CreateDescriptor(counterName, counterDescription, info)); case CounterTypes.ElapsedTime: return(WinElapsedTimeCounter.CreateDescriptor(counterName, counterDescription, info)); case CounterTypes.MomentTime: return(WinMomentTimeCounter.CreateDescriptor(counterName, counterDescription, info)); default: throw new InvalidOperationException("Unknown CounterTypes value: " + type.ToString()); } }