TraceSwitch e SourceSwitch - qual è la differenza?
-
02-10-2019 - |
Domanda
Quindi sono probabilmente manca l'ovvio qui, ma ciò che in realtà è la differenza tra la funzionalità del TraceSwitch
e SourceSwitch
classi?
Entrambi danno descrizioni sommarie identiche:
Fornisce un interruttore a più livelli per controllare l'analisi e debug senza ricompilare il codice.
sono le sezioni osservazioni sono stranamente simili ai miei occhi. Qualcuno potrebbe chiarire la differenza nei loro casi di funzionalità e di utilizzo?
(Per completezza, sto usando gli interruttori con il mio oggetto TraceSource
, piuttosto che la vecchia classe statica Trace
, anche se ne dubito fa molta differenza.)
Soluzione
La differenza è che le opere TraceSwitch
con messaggi Trace
mentre SourceSwitch
funziona con messaggi TraceSource
, che associano i messaggi con la loro fonte. Così con un SourceSwitch
è possibile configurare i vostri ascoltatori in base a dove i messaggi di traccia di provenienza.
Sono d'accordo la documentazione non punta direttamente la differenza, ma scavare in giro per il relativo TraceSource
documentazione relativa alla classe e troverete questo:
La classe
TraceSource
è identificato da il nome di una sorgente, in genere il Nome dell'applicazione. la traccia messaggi provenienti da un particolare componente può essere avviata da un particolare fonte traccia, consentendo a tutti messaggi provenienti da quel componente a essere facilmente identificati.
C'è anche un esempio che mostra come configurare un SourceSwitch
per disattivare l'analisi da una fonte traccia.
Altri suggerimenti
Il (vecchio) TraceSwitch fondamentalmente è un oggetto TraceLevel per essere utilizzato in combinazione con la classe Trace statica.
L'(più recente) TraceSource combina un concetto TraceLevel con i metodi di uscita effettiva.
Di conseguenza, in una grande applicazione è possibile utilizzare più TraceSwitches per configurare le impostazioni di traccia per le diverse parti (GUI, DAL) del programma, ma tutto l'output sarà inviata allo stesso TraceListener (s).
Con un TraceSource si può avere canali di uscita indipendenti. E un'API leggermente migliore.
Questa spiegazione della differenza tra TraceLevel e SourceLevel potrebbe aiutare: