我正在尝试通过.NET 4.5 中包含的EventSource类在我的 .NET 应用程序中使用Windows 事件跟踪 (ETW) 。我将子类化为并尝试实现一个接口(用于模拟目的),如下所示:EventSource
MyEventSource
IMyEventSource
public interface IMyEventSource
{
void Test();
}
public class MyEventSource : EventSource, IMyEventSource
{
public static MyEventSource Log = new MyEventSource();
[Event(1)]
public void Test()
{
this.WriteEvent(1);
}
}
当我运行PerfView并执行此代码时,我收到了IndexOutOfRangeException
对WriteEvent
. 如果我通过修改代码来删除接口......
public class MyEventSource : EventSource
{
public static MyEventSource Log = new MyEventSource();
[Event(1)]
public void Test()
{
this.WriteEvent(1);
}
}
...然后一切正常。
这是我在这两种情况下用于测试的代码:
static void Main(string[] args)
{
MyEventSource.Log.Test();
}
EventSource
如果我的子类只是实现一个接口,为什么它会中断?
这是一个相关的帖子。