VS 2005,C#2.0,.NET 2.0 / 3.0,Win2003的
我想安装一套性能计数器为多实例的。 我注意到一些系统性能计数器类别管理,以保持一个“ 总 ”活着,即使没有其他实例。 ASP.NET应用2.0.50727就是一个例子。
所以,我一直在试图复制此。 我在安装程序类,然后我添加到自定义操作在安装项目创建了以下程序。
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服务器资源管理器显示了InstanceLifetime设置为全局沿着实例。 我不叫在安装程序中的RemoveInstance()方法。
不过,安装程序完成后,几秒钟后,该实例从性能监视器,并从VS服务器资源管理器中消失。 我如何坚持下去? 或者,可以吗?