使用自定义事件源时,例如:
\n\n[EventSource(Name = "MyEventSource")]\npublic partial class CustomEventSource : EventSource\n{\n}\nRun Code Online (Sandbox Code Playgroud)\n\nEventSource 类中有一个 IsEnabled 方法:
\n\nEventSource.IsEnabled(eventLevel,\xe2\x80\x82eventKeywords)\nRun Code Online (Sandbox Code Playgroud)\n\nhttps://msdn.microsoft.com/en-us/library/hh393402(v=vs.110).aspx
\n\n此方法如何确定该事件对于级别和关键字是否“已启用”?似乎没有任何关于此的可靠文档。在我的实现中,该方法返回 false,我不确定需要做什么才能使其返回 true。
\n似乎您需要附加一个来启用它EventListener:EventSource
class CustomEventListener : EventListener
{
protected override void OnEventWritten(EventWrittenEventArgs eventData)
{
}
}
void Main()
{
var src = new CustomEventSource();
var listener = new CustomEventListener();
Console.WriteLine(src.IsEnabled(EventLevel.LogAlways, EventKeywords.None)); // false
listener.EnableEvents(src, EventLevel.Error);
Console.WriteLine(src.IsEnabled(EventLevel.LogAlways, EventKeywords.None)); // true
Console.WriteLine(src.IsEnabled(EventLevel.Critical, EventKeywords.None)); // true
Console.WriteLine(src.IsEnabled(EventLevel.Verbose, EventKeywords.None)); // false
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我还找到了EvenSource.SendCommand可以作为EventCommand.Enable参数的方法,但这只ArgumentException为我抛出一个。是的,文档EventSource确实很糟糕。
| 归档时间: |
|
| 查看次数: |
3742 次 |
| 最近记录: |