2010-09-11 7 views
8

Quindi mi manca probabilmente l'ovvio qui, ma qual è in realtà la differenza tra la funzionalità delle classi TraceSwitch e SourceSwitch?TraceSwitch e SourceSwitch: qual è la differenza?

Entrambi danno descrizioni sommarie identici:

Fornisce un interruttore a più livelli per controllare l'analisi e debug senza ricompilare il codice.

Le sezioni Note sono stranamente simili ai miei occhi. Qualcuno potrebbe chiarire la differenza nella loro funzionalità e casi d'uso?

(Per completezza, sto usando gli interruttori con il mio TraceSource oggetto, piuttosto che il vecchio statica Trace di classe, anche se ne dubito fa molta differenza.)

risposta

9

La differenza è che TraceSwitch opere con Trace messaggi mentre SourceSwitch funziona con i messaggi TraceSource, che associano i messaggi con la loro origine. Quindi con un SourceSwitch è possibile configurare i listener in base a dove sono arrivati ​​i messaggi di traccia.

Accetto la documentazione non punta direttamente la differenza, ma scavare intorno nella relativa documentazione TraceSource classe e troverete questo:

La classe TraceSource è identificata dal il nome di un origine, in genere il nome dell'applicazione. I segnali di traccia provenienti da un particolare componente possono essere avviati da un'origine di traccia specifica , consentendo di identificare facilmente tutti i messaggi provenienti da tale componente su .

C'è anche un esempio che mostra come configurare un SourceSwitch per disattivare la traccia da un'origine di traccia.

+0

Grazie, che rende molto più senso. Devo aver cancellato quel bit in tutto il sovraccarico di informazioni. – Noldorin

5

Il (vecchio) TraceSwitch fondamentalmente è un oggetto TraceLevel da utilizzare in combinazione con la classe Trace statica.

La (nuova) TraceSource combina un concetto TraceLevel con metodi uscita effettivi.

Di conseguenza, in un'app di grandi dimensioni è possibile utilizzare più TraceSwitch per configurare le impostazioni di Traccia per parti diverse (GUI, DAL) del programma, ma tutti gli output verranno inviati agli stessi TraceListener.

Con una TraceSource si può avere canali di uscita indipendenti. E un'API leggermente migliore.

+0

Grazie, sembra il gioco è fatto. – Noldorin

Problemi correlati