我正在尝试修改我在C#中创建的PerformanceCounter。 但它似乎并没有被改变。这个计数器需要一个标志:0或1。
我从网上拿了以下代码。它创造了收藏家类别以及计数器。但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 :(得分:0)
您需要调用m_cntrJoinConctConf_VPG_MyJamboLogin.NextValue();
来填充属性。
注意:第一次调用NextValue()
时RawValue将为0
,因为该功能是比较的。因此,下次您致电NextValue()
时,您应该得到答案。
读取性能计数器之间的最小建议频率为1秒。
有关详细信息,请参阅此MSDN article。