отмена регистрации счетчиков производительности - PullRequest
0 голосов
/ 15 апреля 2011

Я добавил счетчики производительности в свое приложение для независимо от того, происходит ли операция раз или нет.

Но теперь я хочу отменить это. Можно ли отменить регистрацию, удалить его.

Я использовал эти счетчики в 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));
        }
    }

Спасибо и С уважением, Tazim.

1 Ответ

2 голосов
/ 15 апреля 2011

Это может быть слишком очевидно, но, учитывая, что вы пытаетесь сделать действие, противоположное действию PerformanceCounterCategory.Create (я думаю), рассматривали ли вы использование PerformanceCounterCategory.Delete ? Согласно документации это:

Удаляет категорию и ее связанные счетчики от местного компьютер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...