TraceSource Klasse

Definition

Stellt eine Gruppe von Methoden und Eigenschaften bereit, mit denen Anwendungen die Ausführung von Code verfolgen und Ablaufverfolgungsmeldungen ihrer jeweiligen Quelle zuordnen können.

public ref class TraceSource
public class TraceSource
type TraceSource = class
Public Class TraceSource
Vererbung
TraceSource

Beispiele

Das folgende Codebeispiel zeigt die Verwendung der TraceSource -Klasse zum Weiterleiten von Ablaufverfolgungen an Listener. Das Beispiel veranschaulicht auch die Switch- und Filternutzung.

/////////////////////////////////////////////////////////////////////////////////
//
// NAME     TraceSource2.cpp : main project file
//
/////////////////////////////////////////////////////////////////////////////////



// The following configuration file can be used with this sample.
// When using a configuration file #define ConfigFile.
//            <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
//                    <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
//                    <remove name ="Default" />
//            <!-- You can set the level at which tracing is to occur -->
//            <add name="SourceSwitch" value="Warning" />
//            <!-- You can turn tracing off -->
//            <!--add name="SourceSwitch" value="Off" -->
//        <trace autoflush="true" indentsize="4"></trace>

#define TRACE
//#define ConfigFile

#using <System.dll>

using namespace System;
using namespace System::Collections;
using namespace System::Diagnostics;
using namespace System::Reflection;
using namespace System::IO;
using namespace System::Security::Permissions;

void DisplayProperties(TraceSource^ ts);  // Forward Declaration


int main()
{
    TraceSource^ ts = gcnew TraceSource("TraceTest");

    try
        {
        // Initialize trace switches.
#if(!ConfigFile)
        SourceSwitch^ sourceSwitch = gcnew SourceSwitch("SourceSwitch", "Verbose");
        ts->Switch = sourceSwitch;
        int idxConsole = ts->Listeners->Add(gcnew System::Diagnostics::ConsoleTraceListener());
        ts->Listeners[idxConsole]->Name = "console";
#endif
        DisplayProperties(ts);
        ts->Listeners["console"]->TraceOutputOptions |= TraceOptions::Callstack;
        ts->TraceEvent(TraceEventType::Warning, 1);
        ts->Listeners["console"]->TraceOutputOptions = TraceOptions::DateTime;
        // Issue file not found message as a warning.
        ts->TraceEvent(TraceEventType::Warning, 2, "File Test not found");
        // Issue file not found message as a verbose event using a formatted string.
        ts->TraceEvent(TraceEventType::Verbose, 3, "File {0} not found.", "test");
        // Issue file not found message as information.
        ts->TraceInformation("File {0} not found.", "test");
        ts->Listeners["console"]->TraceOutputOptions |= TraceOptions::LogicalOperationStack;
        // Issue file not found message as an error event.
        ts->TraceEvent(TraceEventType::Error, 4, "File {0} not found.", "test");

        // Test the filter on the ConsoleTraceListener.
        ts->Listeners["console"]->Filter = gcnew SourceFilter("No match");
        ts->TraceData(TraceEventType::Error, 5,
            "SourceFilter should reject this message for the console trace listener.");
        ts->Listeners["console"]->Filter = gcnew SourceFilter("TraceTest");
        ts->TraceData(TraceEventType::Error, 6,
            "SourceFilter should let this message through on the console trace listener.");
        ts->Listeners["console"]->Filter = nullptr;

        // Use the TraceData method. 
        ts->TraceData(TraceEventType::Warning, 7, gcnew array<Object^>{ "Message 1", "Message 2" });

        // Activity tests.
        ts->TraceEvent(TraceEventType::Start, 9, "Will not appear until the switch is changed.");
        ts->Switch->Level = SourceLevels::ActivityTracing | SourceLevels::Critical;
        ts->TraceEvent(TraceEventType::Suspend, 10, "Switch includes ActivityTracing, this should appear");
        ts->TraceEvent(TraceEventType::Critical, 11, "Switch includes Critical, this should appear");
        ts->Flush();
        ts->Close();
        Console::WriteLine("Press enter key to exit.");
        Console::Read();
        }
    catch (Exception ^e)
        {
         // Catch any unexpected exception.
         Console::WriteLine("Unexpected exception: " + e->ToString());
         Console::Read();
        }
}


void DisplayProperties(TraceSource^ ts)
{
    Console::WriteLine("TraceSource name = " + ts->Name);
//    Console::WriteLine("TraceSource switch level = " + ts->Switch->Level);         // error C3063: operator '+': all operands must have the same enumeration type
    Console::WriteLine("TraceSource switch level = {0}", ts->Switch->Level);         //  SUCCESS:  does compile.  Weird
    Console::WriteLine("TraceSource Attributes Count " + ts->Attributes->Count);     //  SUCCESS:  also compiles.  Really weird
    Console::WriteLine("TraceSource Attributes Count = {0}", ts->Attributes->Count); //  SUCCESS:  okay, I give up.  Somebody call me a cab.

    Console::WriteLine("TraceSource switch = " + ts->Switch->DisplayName);
    array<SwitchAttribute^>^ switches = SwitchAttribute::GetAll(TraceSource::typeid->Assembly);

    for (int i = 0; i < switches->Length; i++)
        { 
        Console::WriteLine("Switch name = " + switches[i]->SwitchName);
        Console::WriteLine("Switch type = " + switches[i]->SwitchType);
        }

#if(ConfigFile)
            // Get the custom attributes for the TraceSource.
            Console::WriteLine("Number of custom trace source attributes = "
                + ts.Attributes.Count);
            foreach (DictionaryEntry de in ts.Attributes)
                Console::WriteLine("Custom trace source attribute = "
                    + de.Key + "  " + de.Value);
            // Get the custom attributes for the trace source switch.
            foreach (DictionaryEntry de in ts.Switch.Attributes)
                Console::WriteLine("Custom switch attribute = "
                    + de.Key + "  " + de.Value);
#endif
       Console::WriteLine("Number of listeners = " + ts->Listeners->Count);
       for each (TraceListener ^ traceListener in ts->Listeners)
           {
           Console::Write("TraceListener: " + traceListener->Name + "\t");
           // The following output can be used to update the configuration file.
           Console::WriteLine("AssemblyQualifiedName = " +
               (traceListener->GetType()->AssemblyQualifiedName));
           }
}
// The following configuration file can be used with this sample.
// When using a configuration file #define ConfigFile.
//            <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
//                    <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
//                    <remove name ="Default" />
//            <!-- You can set the level at which tracing is to occur -->
//            <add name="SourceSwitch" value="Warning" />
//            <!-- You can turn tracing off -->
//            <!--add name="SourceSwitch" value="Off" -->
//        <trace autoflush="true" indentsize="4"></trace>
#define TRACE
//#define ConfigFile

using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;
using System.IO;
using System.Security.Permissions;

namespace Testing
{
    class TraceTest
    {
        // Initialize the trace source.
        static TraceSource ts = new TraceSource("TraceTest");
        [SwitchAttribute("SourceSwitch", typeof(SourceSwitch))]
        static void Main()
        {
            try
            {
                // Initialize trace switches.
#if(!ConfigFile)
                SourceSwitch sourceSwitch = new SourceSwitch("SourceSwitch", "Verbose");
                ts.Switch = sourceSwitch;
                int idxConsole = ts.Listeners.Add(new System.Diagnostics.ConsoleTraceListener());
                ts.Listeners[idxConsole].Name = "console";
#endif
                DisplayProperties(ts);
                ts.Listeners["console"].TraceOutputOptions |= TraceOptions.Callstack;
                ts.TraceEvent(TraceEventType.Warning, 1);
                ts.Listeners["console"].TraceOutputOptions = TraceOptions.DateTime;
                // Issue file not found message as a warning.
                ts.TraceEvent(TraceEventType.Warning, 2, "File Test not found");
                // Issue file not found message as a verbose event using a formatted string.
                ts.TraceEvent(TraceEventType.Verbose, 3, "File {0} not found.", "test");
                // Issue file not found message as information.
                ts.TraceInformation("File {0} not found.", "test");
                ts.Listeners["console"].TraceOutputOptions |= TraceOptions.LogicalOperationStack;
                // Issue file not found message as an error event.
                ts.TraceEvent(TraceEventType.Error, 4, "File {0} not found.", "test");
                // Test the filter on the ConsoleTraceListener.
                ts.Listeners["console"].Filter = new SourceFilter("No match");
                ts.TraceData(TraceEventType.Error, 5,
                    "SourceFilter should reject this message for the console trace listener.");
                ts.Listeners["console"].Filter = new SourceFilter("TraceTest");
                ts.TraceData(TraceEventType.Error, 6,
                    "SourceFilter should let this message through on the console trace listener.");
                ts.Listeners["console"].Filter = null;
                // Use the TraceData method.
                ts.TraceData(TraceEventType.Warning, 7, new object());
                ts.TraceData(TraceEventType.Warning, 8, new object[] { "Message 1", "Message 2" });
                // Activity tests.
                ts.TraceEvent(TraceEventType.Start, 9, "Will not appear until the switch is changed.");
                ts.Switch.Level = SourceLevels.ActivityTracing | SourceLevels.Critical;
                ts.TraceEvent(TraceEventType.Suspend, 10, "Switch includes ActivityTracing, this should appear");
                ts.TraceEvent(TraceEventType.Critical, 11, "Switch includes Critical, this should appear");
                ts.Flush();
                ts.Close();
                Console.WriteLine("Press any key to exit.");
                Console.Read();
            }
            catch (Exception e)
            {
                // Catch any unexpected exception.
                Console.WriteLine("Unexpected exception: " + e.ToString());
                Console.Read();
            }
        }
        public static void DisplayProperties(TraceSource ts)
        {
            Console.WriteLine("TraceSource name = " + ts.Name);
            Console.WriteLine("TraceSource switch level = " + ts.Switch.Level);
            Console.WriteLine("TraceSource switch = " + ts.Switch.DisplayName);
            SwitchAttribute[] switches = SwitchAttribute.GetAll(typeof(TraceTest).Assembly);
            for (int i = 0; i < switches.Length; i++)
            {
                Console.WriteLine("Switch name = " + switches[i].SwitchName);
                Console.WriteLine("Switch type = " + switches[i].SwitchType);
            }
#if(ConfigFile)
            // Get the custom attributes for the TraceSource.
            Console.WriteLine("Number of custom trace source attributes = "
                + ts.Attributes.Count);
            foreach (DictionaryEntry de in ts.Attributes)
                Console.WriteLine("Custom trace source attribute = "
                    + de.Key + "  " + de.Value);
            // Get the custom attributes for the trace source switch.
            foreach (DictionaryEntry de in ts.Switch.Attributes)
                Console.WriteLine("Custom switch attribute = "
                    + de.Key + "  " + de.Value);
#endif
            Console.WriteLine("Number of listeners = " + ts.Listeners.Count);
            foreach (TraceListener traceListener in ts.Listeners)
            {
                Console.Write("TraceListener: " + traceListener.Name + "\t");
                // The following output can be used to update the configuration file.
                Console.WriteLine("AssemblyQualifiedName = " +
                    (traceListener.GetType().AssemblyQualifiedName));
            }
        }
    }
}
' The following configuration file can be used with this sample.
' When using a configuration file #define ConfigFile.
'            <source name="TraceTest" switchName="SourceSwitch" switchType="System.Diagnostics.SourceSwitch" >
'                    <add name="console" type="System.Diagnostics.ConsoleTraceListener" initializeData="false" />
'                    <remove name ="Default" />
'            <!-- You can set the level at which tracing is to occur -->
'            <add name="SourceSwitch" value="Warning" />
'            <!-- You can turn tracing off -->
'            <!--add name="SourceSwitch" value="Off" -->
'        <trace autoflush="true" indentsize="4"></trace>
#Const TRACE = True
'#Const ConfigFile = True

Imports System.Collections
Imports System.Diagnostics
Imports System.Reflection
Imports System.IO
Imports System.Security.Permissions



Class TraceTest
    ' Initialize the trace source.
    Private Shared ts As New TraceSource("TraceTest")
    <SwitchAttribute("SourceSwitch", GetType(SourceSwitch))> _
    Shared Sub Main()
        Try
            ' Initialize trace switches.
#If (ConfigFile = False) Then
            Dim sourceSwitch As New SourceSwitch("SourceSwitch", "Verbose")
            ts.Switch = sourceSwitch
            Dim idxConsole As New Integer()
            idxConsole = ts.Listeners.Add(New System.Diagnostics.ConsoleTraceListener())
            ts.Listeners(idxConsole).Name = "console"
#End If
            DisplayProperties(ts)
            ts.Listeners("console").TraceOutputOptions = ts.Listeners("console").TraceOutputOptions Or TraceOptions.Callstack
            ts.TraceEvent(TraceEventType.Warning, 1)
            ts.Listeners("console").TraceOutputOptions = TraceOptions.DateTime
            ' Issue file not found message as a warning.
            ts.TraceEvent(TraceEventType.Warning, 2, "File Test not found")
            ' Issue file not found message as a verbose event using a formatted string.
            ts.TraceEvent(TraceEventType.Verbose, 3, "File {0} not found.", "test")
            ' Issue file not found message as information.
            ts.TraceInformation("File {0} not found.", "test")
            ts.Listeners("console").TraceOutputOptions = ts.Listeners("console").TraceOutputOptions Or TraceOptions.LogicalOperationStack
            ' Issue file not found message as an error event.
            ts.TraceEvent(TraceEventType.Error, 4, "File {0} not found.", "test")
            ' Test the filter on the ConsoleTraceListener.
            ts.Listeners("console").Filter = New SourceFilter("No match")
            ts.TraceData(TraceEventType.Error, 5, "SourceFilter should reject this message for the console trace listener.")
            ts.Listeners("console").Filter = New SourceFilter("TraceTest")
            ts.TraceData(TraceEventType.Error, 6, "SourceFilter should let this message through on the console trace listener.")
            ts.Listeners("console").Filter = Nothing
            ' Use the TraceData method. 
            ts.TraceData(TraceEventType.Warning, 7, New Object())
            ts.TraceData(TraceEventType.Warning, 8, New Object() {"Message 1", "Message 2"})
            ' Activity tests.
            ts.TraceEvent(TraceEventType.Start, 9, "Will not appear until the switch is changed.")
            ts.Switch.Level = SourceLevels.ActivityTracing Or SourceLevels.Critical
            ts.TraceEvent(TraceEventType.Suspend, 10, "Switch includes ActivityTracing, this should appear")
            ts.TraceEvent(TraceEventType.Critical, 11, "Switch includes Critical, this should appear")
            ts.Flush()
            ts.Close()
            Console.WriteLine("Press any key to exit.")
            Console.Read()
        Catch e As Exception
            ' Catch any unexpected exception.
            Console.WriteLine("Unexpected exception: " + e.ToString())
            Console.Read()
        End Try

    End Sub

    Public Shared Sub DisplayProperties(ByVal ts As TraceSource)
        Console.WriteLine("TraceSource name = " + ts.Name)
        Console.WriteLine("TraceSource switch level = " + ts.Switch.Level.ToString())
        Console.WriteLine("TraceSource switch = " + ts.Switch.DisplayName.ToString())
        Dim switches As SwitchAttribute() = SwitchAttribute.GetAll(GetType(TraceTest).Assembly)
        Dim i As Integer
        For i = 0 To switches.Length - 1
            Console.WriteLine("Switch name = " + switches(i).SwitchName.ToString())
            Console.WriteLine("Switch type = " + switches(i).SwitchType.ToString())
        Next i

#If (ConfigFile) Then
        ' Get the custom attributes for the TraceSource.
        Console.WriteLine("Number of custom trace source attributes = " + ts.Attributes.Count)
        Dim de As DictionaryEntry
        For Each de In ts.Attributes
            Console.WriteLine("Custom trace source attribute = " + de.Key + "  " + de.Value)
        Next de
        ' Get the custom attributes for the trace source switch.
        For Each de In ts.Switch.Attributes
            Console.WriteLine("Custom switch attribute = " + de.Key + "  " + de.Value)
        Next de
#End If
        Console.WriteLine("Number of listeners = " + ts.Listeners.Count.ToString())
        Dim traceListener As TraceListener
        For Each traceListener In ts.Listeners
            Console.Write("TraceListener: " + traceListener.Name + vbTab)
            ' The following output can be used to update the configuration file.
            Console.WriteLine("AssemblyQualifiedName = " + traceListener.GetType().AssemblyQualifiedName)
        Next traceListener

    End Sub
End Class

Hinweise

Die TraceSource-Klasse wird von Anwendungen verwendet, um Ablaufverfolgungen zu erzeugen, die der Anwendung zugeordnet werden können. TraceSource stellt Ablaufverfolgungsmethoden bereit, mit denen Sie Ereignisse und Daten einfach verfolgen und Ablaufverfolgungen zu Informationszwecken ausgeben können.

In .NET Framework-Apps kann die Ablaufverfolgungsausgabe von TraceSource durch Konfigurationsdateieinstellungen gesteuert werden. Die Konfigurationsdatei befindet sich im Ordner mit der ausführbaren Anwendung und enthält den Namen der Anwendung mit der hinzugefügten .config-Erweiterung. Beispielsweise ist der Name der Konfigurationsdatei für TraceSourceSample.exe TraceSourceSample.exe.config. Die Konfigurationsdatei kann verwendet werden, um anzugeben, wo die Ablaufverfolgungsinformationen gesendet werden sollen und welche Aktivitätsebenen nachverfolgt werden sollen. Das folgende Beispiel zeigt den Inhalt eines Beispiels .NET Framework Anwendungskonfigurationsdatei.

<configuration>  
  <system.diagnostics>  
    <sources>  
      <source name="TraceTest" switchName="SourceSwitch"   
        switchType="System.Diagnostics.SourceSwitch" >  
        <listeners>  
          <add name="console" />  
          <remove name ="Default" />  
        </listeners>  
      </source>  
    </sources>  
    <switches>  
      <!-- You can set the level at which tracing is to occur -->  
      <add name="SourceSwitch" value="Warning" />  
        <!-- You can turn tracing off -->  
        <!--add name="SourceSwitch" value="Off" -->  
    </switches>  
    <sharedListeners>  
      <add name="console"   
        type="System.Diagnostics.ConsoleTraceListener"   
        initializeData="false"/>  
    </sharedListeners>  
    <trace autoflush="true" indentsize="4">  
      <listeners>  
        <add name="console" />  
      </listeners>  
    </trace>  
  </system.diagnostics>  
</configuration>  

Die TraceSource -Klasse wird durch den Namen einer Quelle identifiziert, in der Regel durch den Namen der Anwendung. Die Ablaufverfolgungsmeldungen, die von einer bestimmten Komponente stammen, können von einer bestimmten Ablaufverfolgungsquelle initiiert werden, sodass alle nachrichten, die von dieser Komponente stammen, leicht identifiziert werden können.

TraceSource definiert Ablaufverfolgungsmethoden, stellt jedoch keinen spezifischen Mechanismus zum Generieren und Speichern von Ablaufverfolgungsdaten bereit. Die Ablaufverfolgungsdaten werden von Ablaufverfolgungslistenern erzeugt, bei denen es sich um Plug-Ins handelt, die von Ablaufverfolgungsquellen geladen werden können.

Hinweis

Sie sollten die Ablaufverfolgungsmethoden während der Finalisierung nicht aufrufen. Dies kann dazu führen, dass ein ObjectDisposedException Ausgelöst wird.

Sie können das Ziel der Ablaufverfolgungsausgabe anpassen, indem Sie Instanzen zu oder aus der in der TraceSource.Listeners -Eigenschaft gespeicherten Auflistung hinzufügen oder entfernenTraceListener. Standardmäßig wird die Ablaufverfolgungsausgabe mithilfe eines instance der DefaultTraceListener -Klasse erstellt.

Im obigen Beispiel .NET Framework App-Konfigurationsdatei wird das Entfernen DefaultTraceListener und Hinzufügen von veranschaulichtConsoleTraceListener, um die Ablaufverfolgungsausgabe für die Ablaufverfolgungsquelle zu erzeugen. Weitere Informationen finden Sie unter <Listener> und <sharedListener>.

Hinweis

Das Hinzufügen eines Ablaufverfolgungslisteners zur Auflistung kann dazu führen, dass während der Listeners Ablaufverfolgung eine Ausnahme ausgelöst wird, wenn eine vom Ablaufverfolgungslistener verwendete Ressource nicht verfügbar ist. Die Bedingungen und die ausgelöste Ausnahme hängen vom Ablaufverfolgungslistener ab und können in diesem Thema nicht aufgezählt werden. Es kann nützlich sein, Aufrufe der TraceSource Methoden in try/catch Blöcken zu platzieren, um alle Ausnahmen von Ablaufverfolgungslistenern zu erkennen und zu behandeln.

Die SourceSwitch -Klasse bietet die Möglichkeit, die Ablaufverfolgungsausgabe dynamisch zu steuern. Für .NET Framework-Apps zeigt das obige Konfigurationsdateibeispiel, wie Sie die Ablaufverfolgung über eine Ablaufverfolgungsquelle deaktivieren und die Ebene steuern können, auf der die Ablaufverfolgung erfolgt. Sie können den Wert des Quellswitches ändern, ohne Ihre Anwendung neu zu kompilieren. Informationen zur Verwendung der Konfigurationsdatei zum Festlegen eines Schalters finden Sie unter Switchund Vorgehensweise: Create, Initialisieren und Konfigurieren von Ablaufverfolgungsschaltern.

Hinweis

Wenn Sie eine Konfigurationsdatei ändern, während eine Anwendung ausgeführt wird, muss die Anwendung beendet und neu gestartet werden, oder die Refresh Methode muss aufgerufen werden, bevor die neuen Einstellungen wirksam werden.

Die TraceEventType Enumeration wird verwendet, um den Ereignistyp der Ablaufverfolgungsnachricht zu definieren. Ablaufverfolgungsfilter verwenden den TraceEventType , um zu bestimmen, ob ein Ablaufverfolgungslistener die Ablaufverfolgungsmeldung erzeugen soll.

Die Ablaufverfolgungslistener können optional über eine zusätzliche Filterebene durch einen Ablaufverfolgungsfilter verfügen. Wenn ein Ablaufverfolgungslistener über einen zugeordneten Filter verfügt, ruft der Listener die ShouldTrace Methode für diesen Filter auf, um zu bestimmen, ob die Ablaufverfolgungsinformationen erzeugt werden sollen.

Die Ablaufverfolgungslistener verwenden die Werte der Trace Klasseneigenschaften Indent, IndentSizeund AutoFlush , um die Ablaufverfolgungsausgabe zu formatieren. In .NET Framework-Apps können Sie Konfigurationsdateiattribute verwenden, um die IndentEigenschaften , IndentSizeund AutoFlush festzulegen. Im folgenden Beispiel wird die AutoFlush -Eigenschaft auf false und die IndentSize -Eigenschaft auf 3 festgelegt.

<configuration>  
  <system.diagnostics>  
    <trace autoflush="false" indentsize="3" />  
  </system.diagnostics>  
</configuration>  

Konstruktoren

TraceSource(String)

Initialisiert eine neue Instanz der TraceSource-Klasse, wobei der angegebene Namen der Quelle verwendet wird.

TraceSource(String, SourceLevels)

Initialisiert eine neue Instanz der TraceSource-Klasse, wobei der angegebene Name der Quelle und die Standardebene der Quelle verwendet werden, auf der die Ablaufverfolgung durchgeführt werden soll.

Eigenschaften

Attributes

Ruft die benutzerdefinierten Schalterattribute ab, die in der Anwendungskonfigurationsdatei definiert sind.

DefaultLevel

Ruft die im Konstruktor zugewiesene Standardebene ab.

Listeners

Ruft die Auflistung der Ablaufverfolgungslistener für die Ablaufverfolgungsquelle ab.

Name

Ruft den Namen der Ablaufverfolgungsquelle ab.

Switch

Ruft den Wert des Quellschalters ab oder legt diesen fest.

Methoden

Close()

Schließt alle Ablaufverfolgungslistener in der Auflistung der Ablaufverfolgungslistener.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
Flush()

Entfernt alle Ablaufverfolgungslistener aus der Auflistung der Ablaufverfolgungslistener.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetSupportedAttributes()

Ruft die von der Ablaufverfolgungsquelle unterstützten benutzerdefinierten Attribute ab.

GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TraceData(TraceEventType, Int32, Object)

Schreibt Ablaufverfolgungsdaten in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp, der Ereignisbezeichner und die angegebenen Ablaufverfolgungsdaten verwendet.

TraceData(TraceEventType, Int32, Object[])

Schreibt Ablaufverfolgungsdaten in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp, der Ereignisbezeichner und das Array von Ablaufverfolgungsdaten verwendet.

TraceEvent(TraceEventType, Int32)

Schreibt eine Meldung eines Ablaufverfolgungsereignisses in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp und Ereignisbezeichner verwendet.

TraceEvent(TraceEventType, Int32, String)

Schreibt eine Meldung eines Ablaufverfolgungsereignisses in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp, der Ereignisbezeichner und die angegebene Meldung verwendet.

TraceEvent(TraceEventType, Int32, String, Object[])

Schreibt ein Ablaufverfolgungsereignis in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene Ereignistyp, der Ereignisbezeichner sowie das angegebene Argumentarray und Format verwendet.

TraceInformation(String)

Schreibt eine Informationsmeldung unter Verwendung der angegebenen Meldung in die Ablaufverfolgungslistener in der Listeners-Auflistung.

TraceInformation(String, Object[])

Schreibt eine Informationsmeldung unter Verwendung des angegebenen Objektarrays und der Formatierungsinformationen in die Ablaufverfolgungslistener in der Listeners-Auflistung.

TraceTransfer(Int32, String, Guid)

Schreibt eine Meldung der Ablaufverfolgungsübertragung in die Ablaufverfolgungslistener der Listeners-Auflistung. Hierbei werden der angegebene numerische Bezeichner, die Meldung und der verwandte Aktivitätsbezeichner verwendet.

Ereignisse

Initializing

Tritt auf, wenn ein TraceSource initialisiert werden muss.

Gilt für:

Threadsicherheit

Dieser Typ ist threadsicher.

Weitere Informationen