大家好,我对此代码示例有疑问,我该如何解决?
我有打击代码示例:
private static void processETW()
{
var sessionName = "ETWSessionDemo";
using var session = new TraceEventSession(sessionName);
Console.CancelKeyPress += (object? sender, ConsoleCancelEventArgs e) =>
{
session.Stop();
session.Dispose();
};
using var source = new ETWTraceEventSource(sessionName, TraceEventSourceType.Session);
var parser = new DynamicTraceEventParser(source);
session.EnableProvider(MyApplicationProviderId, TraceEventLevel.Always, options: new TraceEventProviderOptions()
{
Arguments = new[] { new KeyValuePair<string, string>("EventCounterIntervalSec", "1") },
ProcessNameFilter = new List<string> { "EventSource.exe" }
});
session.EnableProvider(OpenMessageProviderId, TraceEventLevel.Always, options: new TraceEventProviderOptions()
{
Arguments = new[] { new KeyValuePair<string, string>("EventCounterIntervalSec", "2") },
ProcessNameFilter = new List<string> { "EventSource.exe" }
});
parser.All += (data) =>
{
Console.WriteLine("--------------------------------------------------------------");
Console.WriteLine("ProviderName : " + data.ProviderName);
Console.WriteLine("ProviderGuid : " + data.ProviderGuid);
Console.WriteLine("EventID : " + data.ID);
Console.WriteLine("Level : " + data.Level);
Console.WriteLine("Channel : " + data.Channel);
Console.WriteLine("Task : " + data.Task);
Console.WriteLine("TaskName : " + data.TaskName);
Console.WriteLine("TimeStamp : " + data.TimeStamp);
Console.WriteLine("FormattedMessage : " + data.FormattedMessage);
if (data.PayloadValue(0) is not IDictionary<string, object> dic
|| (!dic.TryGetValue("CounterType", out var counterType))) return;
Display(dic, counterType.ToString());
Console.WriteLine("--------------------------------------------------------------");
};
source.Process();
}
我如何从有效负载中获取 CPU_Usage 并显示它,因为有效负载不包含 CPU_Usage。 提前致谢。