TraceSwitch et SourceSwitch - quelle est la différence?
-
02-10-2019 - |
Question
Je suis probablement le manque évident ici, mais ce qui est en fait la différence entre la fonctionnalité du TraceSwitch
et les cours de SourceSwitch
?
Les deux donnent des descriptions sommaires identiques:
Fournit un interrupteur à plusieurs niveaux de commande de suivi et de sortie debug sans recompiler votre code.
Les sections Remarques sont étrangement similaires à mes yeux. Quelqu'un pourrait-il s'il vous plaît préciser la différence dans leur cas de fonctionnalité et d'utilisation?
(Pour être complet, j'utilise des commutateurs avec mon objet TraceSource
, plutôt que l'ancienne classe Trace
de statique, bien que je doute que cela fasse beaucoup de différence.)
La solution
La différence est que les travaux de TraceSwitch
avec des messages Trace
alors que SourceSwitch
fonctionne avec des messages TraceSource
, qui associent les messages avec leur source. Donc, avec un SourceSwitch
vous pouvez configurer vos auditeurs en fonction de l'endroit où les messages de trace venaient.
Je suis d'accord la documentation ne dirigez pas directement la différence, mais fouiller dans la liées TraceSource
documentation de la classe et vous trouverez ceci:
La classe
TraceSource
est identifiée par le nom d'une source, généralement la nom de l'application. la trace les messages provenant d'un particulier composant peut être initié par un source de trace particulière, ce qui permet tout les messages provenant de ce que le composant à être facilement identifié.
Il y a aussi un exemple que vous montrant comment configurer un SourceSwitch
pour désactiver le suivi à partir d'une source de trace.
Autres conseils
Le (plus) TraceSwitch est essentiellement un objet TraceLevel être utilisé en combinaison avec la classe statique Trace.
La (nouvelle) TraceSource combine un concept TraceLevel avec des méthodes de production réelle.
En conséquence, dans une grande application, vous pouvez utiliser plusieurs TraceSwitches pour configurer les paramètres de trace pour différentes parties (GUI, DAL) du programme, mais toutes les sorties seront envoyés à la même TraceListener (s).
Avec un TraceSource vous pouvez avoir des canaux de sortie indépendants. Et une API légèrement mieux.
Cette explication de la différence entre TraceLevel et SourceLevel pourrait aider: