C# 如何以编程方式记录PerformanceCounter

C# 如何以编程方式记录PerformanceCounter,c#,.net,logging,performancecounter,perfmon,C#,.net,Logging,Performancecounter,Perfmon,我知道使用Perfmon.msc可以创建自定义性能计数器,通过使用计数器日志,可以将计数器值写入文本文件 我还知道,我也可以通过使用创建性能计数器,并使用NextValue()方法获取计数器值,从而以编程方式使用此方法。 是否有一种编程方法告诉PerformanceCounter对象也将日志写入文本文件(类似于perfmon.msc中的计数器日志)?在.NET中,您必须自己对计数器进行采样,并将采样值写入文件。但是,Win32 API有一些函数可以实现您想要的功能。有关本机API的示例,请参阅。

我知道使用
Perfmon.msc
可以创建自定义性能计数器,通过使用计数器日志,可以将计数器值写入文本文件

我还知道,我也可以通过使用创建性能计数器,并使用
NextValue()
方法获取计数器值,从而以编程方式使用此方法。
是否有一种编程方法告诉
PerformanceCounter
对象也将日志写入文本文件(类似于
perfmon.msc
中的计数器日志)?

在.NET中,您必须自己对计数器进行采样,并将采样值写入文件。但是,Win32 API有一些函数可以实现您想要的功能。有关本机API的示例,请参阅。您可以尝试使用p/invoke来调用API。

按照另一张海报的建议使用p/invoke会带来很多麻烦。我建议使用
System.Diagnostics.Process.Start()

从命令行运行PerfMon已经能够为任意一组计数器以各种格式将日志集合安排到文件中。是的,但我没有找到这样做的方法programmatically@LouisRhys:仅当您使用平台调用(p/invoke)时从托管代码调用API或在API周围创建托管C++包装器。P/invoke可能更容易,但有些API确实很难用这种方式调用。我自己还没有试过PDH API。