Also vermisse ich hier wahrscheinlich das Offensichtliche, aber was ist eigentlich der Unterschied zwischen der Funktionalität von TraceSwitch
und SourceSwitch
Klassen ?
Beide geben identische zusammenfassende Beschreibungen:
Bietet einen Multilevel-Switch zur Steuerung der Ablaufverfolgung und Debugausgabe, ohne dass der Code neu kompiliert wird.
Sind die Bemerkungen-Abschnitte meinen Augen seltsam ähnlich? Könnte jemand bitte den Unterschied in ihren Funktionen und Anwendungsfällen klären?
(Der Vollständigkeit halber verwende ich Schalter mit meinem TraceSource
-Objekt und nicht mit der alten statischen Trace
-Klasse, obwohl ich bezweifle, dass es einen großen Unterschied macht.)
Der Unterschied besteht darin, dass TraceSwitch
mit Trace
messages arbeitet, während SourceSwitch
mit TraceSource
messages arbeitet, die die Nachrichten ihrer Quelle zuordnen. Also mit einem SourceSwitch
können Sie Ihre Listener basierend darauf konfigurieren, woher die Trace-Nachrichten kommen.
Ich stimme zu, dass die Dokumentation nicht direkt auf den Unterschied hinweist, aber grabe dich in der entsprechenden TraceSource
Klassendokumentation und Sie werden folgendes finden:
Die Klasse
TraceSource
ist mit gekennzeichnet der Name einer Quelle, normalerweise der Name der Anwendung Die Spur Nachrichten kommen von einem bestimmten Komponente kann von a initiiert werden bestimmte Spurenquelle, die alle erlaubt Nachrichten von dieser Komponente an leicht identifiziert werden.
Es gibt auch ein Beispiel, das zeigt, wie Sie SourceSwitch
konfigurieren, um die Ablaufverfolgung von einer Ablaufverfolgungsquelle zu deaktivieren.
Der (ältere) TraceSwitch ist grundsätzlich ein TraceLevel-Objekt, das in Kombination mit der statischen Trace-Klasse verwendet werden soll.
Die (neuere) TraceSource kombiniert ein TraceLevel-Konzept mit tatsächlichen Ausgabemethoden.
Als Konsequenz können Sie in einer großen App mehrere TraceSwitches verwenden, um Trace-Einstellungen für verschiedene Teile (GUI, DAL) des Programms zu konfigurieren, aber alle Ausgaben werden an dieselben TraceListener gesendet.
Mit einer TraceSource können Sie unabhängige Ausgabekanäle haben. Und eine etwas bessere API.
Diese Erklärung des Unterschieds zwischen TraceLevel und SourceLevel könnte helfen:
Tags und Links .net tracing traceswitch