.NET 4.5 に含まれていたEventSourceクラスを介して、.NET アプリケーションでEvent Tracing for 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
単純にインターフェイスを実装しているのに、サブクラスが壊れるのはなぜですか?
関連記事はこちら。