Visual Basic 2012 Voorbeelden
   

visual basic 2012 broncode voorbeelden

Blijf op de hoogte van de recente aanpassingen op vbvoorbeelden!

Microsoft Visual Studio 2012Microsoft Developers Network - Visual BasicMicrosoft .NET Framework

32.7. TraceSource en Compiler Directive TRACE

Print Email Deel op Twitter Deel op Facebook

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.

In voorbeelden van de vorige onderwerpen werd de const directive TRACE op True ingesteld.  Dit was bijvoorbeeld ook noodschakelijk bij het gebruik van de WriteLine method van de Trace klasse.  Dit omdat in de definitie van de method het attribuut <Conditional("TRACE") is opgenomen.

Ook de TraceInformation, en de verderop behandelde TraceEvent en TraceData methods, van de TraceSource klasse heeft dit attribuut in zijn definitie : <Conditional("TRACE")> Public Sub TraceInformation(ByVal message As String)

Met andere woorden hier is opnieuw vereist dat de compiler directive TRACE op True is ingesteld.

Herinner je dat we dit in Visual Studio ook op projectniveau kunnen instellen of als schakeloptie duidelijk maken voor de commandline compiler.

De constructor, de Flush method en de properties van TraceSource bevatten in hun definities echter niet dat attribuut, waardoor creatie van deze objecten niet afhankelijk is van deze ingestelde const directive.

Indien men creatie van TraceSource objecten (1) en calls naar de Flush method (7) wil verhinderen indien TRACE op False staat dan zou men aan de compiler kunnen zeggen dat deze code/calls enkel worden gecompileerd indien TRACE op True staat ((3) en (6)).
Visual Basic 2012 Broncode - Codevoorbeeld 801
Imports System.Diagnostics
#Const TRACE = True                                                        ' (1)
Class ExampleWithDefaultListenerAndCompilerDirectives
    Public Shared Sub Main()
        Dim traceSource As TraceSource                                     ' (2)
        '
#If TRACE Then                                                             ' (3)
        traceSource = New TraceSource("myTraceSource", _
                                      SourceLevels.Information)            ' (4)
#End If
        '
        traceSource.TraceInformation("Message 1")                          ' (5)
        '
#If TRACE Then                                                             ' (6)
        traceSource.Flush()                                                ' (7)
#End If
    End Sub
End Class
Als men in bovenstaand voorbeeld voorbeeld conditie (6) verwijdert en TRACE op False zet (1) zou at runtime een fout optreden ( NullReferenceException).
Men kan immers geen method aanroepen op een objectexpressie die in dat geval naar Nothing evalueert.

De call naar de TraceInformation method hoeft echter niet voorwaardelijk te gebeuren, de opname daarvan in de compilatie is immers reeds conditioneel ( <Conditional("TRACE")> Sub TraceInformation...).

Ter illustratie is in bovenstaand voorbeeld SourceLevels.Information gebruikt om duidelijk te maken dat ook dit een voldoende niveau (level) is voor boodschappen die via TraceInformation worden verzonden.
Deze boodschappen zijn van het type TraceEventType.Information, verderop meer over de TraceEventType enumeratie en de verschillende soorten van boodschappen.

Dit artikel is gepubliceerd op maandag 15 oktober 2012 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.