C# 'IDictionary<;类型的最后一个参数的目的是什么;字符串,字符串>;`在`EventListener.EnableEvents`方法中?

C# 'IDictionary<;类型的最后一个参数的目的是什么;字符串,字符串>;`在`EventListener.EnableEvents`方法中?,c#,.net-4.5,slab,C#,.net 4.5,Slab,我试图找出方法EventListener.EnableEvents(EventSource、EventLevel、EventKeywords、IDictionary)中的最后一个参数(IDictionary)如何影响方法的行为 我已经检查了,但描述不清楚,也没有如何使用它的示例。事件的参数是什么?如何在字典中指定它们?如果有人能举个例子,那就太完美了 我找到的最接近这个答案是 您正在记录来自应用程序的事件,并且还希望捕获来自未在应用程序中定义但与应用程序相关的事件源的事件。例如,您希望在应用程序

我试图找出方法
EventListener.EnableEvents(EventSource、EventLevel、EventKeywords、IDictionary)
中的最后一个参数(
IDictionary
)如何影响方法的行为


我已经检查了,但描述不清楚,也没有如何使用它的示例。事件的参数是什么?如何在字典中指定它们?如果有人能举个例子,那就太完美了

我找到的最接近这个答案是

您正在记录来自应用程序的事件,并且还希望捕获来自未在应用程序中定义但与应用程序相关的事件源的事件。例如,您希望在应用程序收到请求时捕获ASP.NET引发的RequestStarted事件。但是,您不希望收集所有这些事件,因为这些附加源生成的卷将淹没您的日志存储,或者使分析日志信息变得非常困难。要解决这个问题,您需要只收集事件的一个样本,而不是所有的样本,并且能够过滤从中收集事件的流程

EventListener.EnableEvents中的
IDictionary
是命令参数,并传递给EventSource。基本上,它是一种内置于EventSource中的可扩展性机制。例如,自定义事件源可以覆盖OnEventCommand并响应任意命令

System.Diagnostics.Tracing.EventSource当前支持的命令参数为“ActivitySamplingStartEvent”、“ActivitySampling”和“EtwSessionKeyword”

下面是一个关于如何从语义日志应用程序块文章中使用它们的示例:

var listener=newobserveEventListener();
EnableEvents(“MyCustomEventSource”,
事件级别。信息性,关键字。无,
新词典{
{“ActivitySampling”,“true”}
});
您链接的文档会显示“为具有…和匹配参数的指定事件源启用事件”。问题仍然是:事件的参数是什么,它们在字典中是如何指定的?
var listener = new ObservableEventListener();

listener.EnableEvents("MyCustomEventSource", 
         EventLevel.Informational, Keywords.None,
         new Dictionary<string, string> {
           { "ActivitySampling", "true" }
         });