我正在尝试通过.NET 4.5中包含的EventSource类,在我的.NET应用程序中使用Windows事件跟踪(ETW)。我将
当我运行PerfView并执行以下代码时,会在调用
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并执行以下代码时,会在调用
WriteEvent
时出现IndexOutOfRangeException
。如果我通过修改代码来删除接口...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
子类仅实现一个接口,为什么会出错?
这里有一个相关帖子。