C# PerformanceCounter原始值未更改\修改

C# PerformanceCounter原始值未更改\修改,c#,perfmon,C#,Perfmon,我正在尝试修改我在C中创建的PerformanceCounter。 但它似乎并没有被改变。此计数器实际上需要是一个标志:0或1 我从网上获取了以下代码。它与计数器一起创建了收集器类别。但是原始值总是显示为0 我正在使用Win7/64 你能给个建议吗 using System; using System.Diagnostics; using System.Runtime.InteropServices; namespace PerformanceCounterSample { /

我正在尝试修改我在C中创建的PerformanceCounter。 但它似乎并没有被改变。此计数器实际上需要是一个标志:0或1

我从网上获取了以下代码。它与计数器一起创建了收集器类别。但是原始值总是显示为0

我正在使用Win7/64

你能给个建议吗

    using System;
using System.Diagnostics;
using System.Runtime.InteropServices;

namespace PerformanceCounterSample
{
    /// <summary>
    /// Entry class for the sample
    /// </summary>
    class PerformanceCounterSampleStarter
    {
        /// <summary>
        /// Imports the <code>QueryPerformanceFrequency</code> me  thod into the class. The method is used to measure the current
        /// tickcount of the system.
        /// </summary>
        /// <param name="ticks">current tick count</param>
        [DllImport("Kernel32.dll")]
        public static extern void QueryPerformanceCounter(ref long ticks);

        /// <summary>
        /// Main thread
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            PerformanceCounterSample test = new PerformanceCounterSample();
            Random rand = new Random();
            long startTime = 0;
            long endTime = 0;

            for (int i=0; i<1000; i++)
            {
                // measure starting time
                QueryPerformanceCounter(ref startTime);

                System.Threading.Thread.Sleep(rand.Next(500));

                // measure ending time
                QueryPerformanceCounter(ref endTime);

                // do some processing
                test.DoSomeProcessing(endTime - startTime);
            }
        }
    }

    /// <summary>
    /// The PerformanceCounterSample class sets up a performance counter category called "JamboCpmTool" if it does not already
    /// exists and adds some counters to it. It provides a method to increment these counters.
    /// </summary>
    public class PerformanceCounterSample
    {
        private PerformanceCounter m_cntrJoinConctConf_VPG_MyJamboLogin;

        public PerformanceCounterSample()
        {
            if (!PerformanceCounterCategory.Exists("JamboCpmTool"))
            {
                CounterCreationDataCollection counters = new CounterCreationDataCollection();

                CounterCreationData VPG_MyJamboLogin = new CounterCreationData();
                VPG_MyJamboLogin.CounterName = "JoinConnectConf_VPG_MyJamboLogin";
                VPG_MyJamboLogin.CounterHelp = "Join Connect Conf VPG MyJambo Login Success";
                VPG_MyJamboLogin.CounterType = PerformanceCounterType.NumberOfItems64;
                counters.Add(VPG_MyJamboLogin);

                // create new category with the counters above
                System.Diagnostics.PerformanceCounterCategory.Create("JamboCpmTool", "Sample category for Codeproject", PerformanceCounterCategoryType.SingleInstance, counters);
            }

            // create counters to work with
            m_cntrJoinConctConf_VPG_MyJamboLogin = new PerformanceCounter();
            m_cntrJoinConctConf_VPG_MyJamboLogin.CategoryName = "JamboCpmTool";
            m_cntrJoinConctConf_VPG_MyJamboLogin.CounterName = "JoinConctConf_VPG_MyJamboLogin";
            m_cntrJoinConctConf_VPG_MyJamboLogin.MachineName = ".";
            m_cntrJoinConctConf_VPG_MyJamboLogin.ReadOnly = false;
            m_cntrJoinConctConf_VPG_MyJamboLogin.RawValue = 0;
        }

        /// <summary>
        /// Increments counters.
        /// </summary>
        /// <param name="ticks">The number of ticks the AverageTimer32 counter must be incremented by</param>
        public void DoSomeProcessing(long ticks)
        {
            m_cntrJoinConctConf_VPG_MyJamboLogin.RawValue = 100L;
            Console.WriteLine("m_cntrJoinConctConf_VPG_MyJamboLogin = " + m_cntrJoinConctConf_VPG_MyJamboLogin.RawValue);
        }
    }
}
您需要调用m_cntrjoinctconf_VPG_MyJamboLogin.NextValue;以填充属性

注意:第一次调用NextValue时,由于函数是比较函数,所以RawValue将为0。因此,下一次调用NextValue时,您应该有您的答案

读取性能计数器之间的最小建议频率为1秒

有关更多详细信息,请参见此