注销性能计数器

Posted

技术标签:

【中文标题】注销性能计数器【英文标题】:unregistering a performance counters 【发布时间】:2011-04-15 04:57:50 【问题描述】:

我已在我的应用程序中添加了性能自定义计数器以 操作是否发生的次数。

但现在我想注销它。 是否可以注销它删除它。

我在 C# 中使用过这个计数器。

创建性能类别的类和 为其添加计数器。

using System;
using System.Diagnostics;

namespace GroupChatLibrarySamples

    ///<summary>
    ///Helper class to demonstrate the setup of performance counters.
    ///</summary>
    public class PerformanceCounterHelper
    
        //Total number of tests executed
        private PerformanceCounter _TotalFiles = null;
        /// <summary>
        /// Constructor
        /// </summary>
        public PerformanceCounterHelper()
        
            // Set up the performance counter(s)
             if (!PerformanceCounterCategory.Exists("Total_Files","."))
             
                //Create the collection container
                CounterCreationDataCollection counters = new CounterCreationDataCollection();
                ////Create counter #1 and add it to the collection
                CounterCreationData tests = new CounterCreationData();
                tests.CounterName = "Total_Files_Sent";
                tests.CounterHelp = "Total number of Files Sent";
                tests.CounterType = PerformanceCounterType.NumberOfItems32;
                counters.Add(tests);

                //Create the category and all of the counters.
                PerformanceCounterCategory.Create("Total_Files", "Performance Counter for checking no of files sent", counters);
             
             try
             
                 _TotalFiles = new PerformanceCounter();
                 _TotalFiles.CategoryName = "Total_Files";
                 _TotalFiles.CounterName = "Total_Files_Sent";
                 _TotalFiles.MachineName = ".";
                 _TotalFiles.ReadOnly = false;
             
             catch (Exception e)
             
                 Console.WriteLine(" 0 \n", e.StackTrace);

             

        


        public void IncrementCounters()
        
            _TotalFiles.Increment();

        
    

计数器递增的代码:

    private void BeginSendFilesFinished(IAsyncResult ar) 
    

        currentOperation.End("BeginSendFilesFinished", () => session.EndUploadFile(ar)); 
        Console.WriteLine(" File Count  : 0 \n", listoffiles.Count);
        if(sentFiles <  (listoffiles.Count-1))
        
                sentFiles++;  
                string SampleFile = listoffiles[sentFiles].ToString();
                FileInfo filetoupload = new FileInfo(SampleFile);                        
                ChatRoomFileUploadJob uploadfilejob = new ChatRoomFileUploadJob(filetoupload);
                counterHelper.IncrementCounters();   
                currentOperation.Begin(string.Format("Send Files: # 0", sentFiles), () => session.BeginUploadFile(uploadfilejob, BeginSendFilesFinished, null));

        
        else
        
            Log("Leave ChatRoom:");
            // After sending 10 chat msgs, leave the chat room (and rejoin).
            currentOperation.Begin("Leave ChatRoom:", () => session.BeginLeave(BeginLeaveChatRoomFinished, null));
        
    

感谢和问候, 塔齐姆。

【问题讨论】:

Could you please provide us the code where you register it? 我已经添加了这个计数器,并使用 perfmon 监控它。但我想删除它知道或删除它或取消注册它。是否可以 ?任何链接和指针都将是有价值的。提前致谢 可以删除计数器。 ***.com/questions/140149/… 【参考方案1】:

这可能太明显了,但考虑到您正在尝试执行与 PerformanceCounterCategory.Create 操作相反的操作(我认为),您是否考虑过使用 PerformanceCounterCategory.Delete?根据文档:

删除类别及其 来自本地的相关计数器 电脑

【讨论】:

以上是关于注销性能计数器的主要内容,如果未能解决你的问题,请参考以下文章

性能测试–性能监视器

PowerBI分析Windows性能计数器的数据

从非托管代码更新性能计数器

Windows性能计数器分析性能监视器的使用

使用硬件性能计数器是个好主意吗

RawFraction 性能计数器即使在删除性能类别后仍保持其状态