Minderung: EventSource.WriteEvent-Methodenaufrufe

.NET Framework 4.5.1 setzt einen Vertrag zwischen einer ETW-Ereignismethode in einer Klasse, die von System.Diagnostics.Tracing.EventSource abgeleitet wird, und der WriteEvent -Methode der Basisklasse durch. Die ETW-Ereignismethode muss der WriteEvent -Methode die Ereignis-ID gefolgt von den gleichen Argumenten übergeben, die an die Ereignismethode übergeben wurden.

Auswirkungen

Eine ETW-Ereignismethode, die folgendermaßen definiert ist, verstößt gegen den Vertrag:

[Event(2, Level = EventLevel.Informational)]  
public void Info2(string message)  
{  
   base.WriteEvent(2, message, "-");  
}  

Wenn gegen diesen Vertrag verstoßen wird, wird eine IndexOutOfRangeException -Ausnahme zur Laufzeit ausgelöst, wenn ein EventListener -Objekt EventSource -Daten im Prozess liest.

Die Definition für diese ETW-Ereignismethode sollte diesem Muster folgen:

[Event(2, Level = EventLevel.Informational)]  
public void Info2(string message)  
{  
   base.WriteEvent(2, message);  
}  

Minderung

Sie müssen vorhandenen Code so ändern, dass dieser dem erforderlichen Muster entspricht.

Sie können den Code, den Sie ändern müssen, minimieren, indem Sie wie folgt zwei Methoden zum Aufrufen der WriteEvent -Methode definieren:

[NonEvent]  
public void Info2(string message)  
{  
   Info2Internal(message, "-");  
}  

public void Info2Internal(string message, string prefix)  
{  
   WriteEvent(2, message, prefix);  
}  

Siehe auch

Änderungen zur Laufzeit