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.)

È stato utile?

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:

System.Diagnostics SourceLevels nascosti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top