2015-04-05 71 views
0

我想修改我在C#中創建的PerformanceCounter。 但它似乎並沒有被改變。這個計數器需要實際上是一個標誌:0或1.PerformanceCounter RawValue沒有改變修改

我從網上拿下面的代碼。它與櫃檯一起創造了收藏家類別。但是RawValue總是顯示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); 
     } 
    } 
} 

回答

0

您需要致電m_cntrJoinConctConf_VPG_MyJamboLogin.NextValue();填寫屬性。

注:你第一次叫NextValue()的RawValue將0的功能比較。因此,下次您撥打NextValue()時,您應該有答案。

讀取性能計數器之間的最小推薦頻率爲1秒。

有關更多詳細信息,請參閱此MSDN article