Freigeben über


CorrelationManager Klasse

Definition

Korreliert Ablaufverfolgungen, die Teil einer logischen Transaktion sind.

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

Beispiele

Im folgenden Codebeispiel wird die Verwendung der CorrelationManager Klasse veranschaulicht, indem der logische Vorgang identifiziert wird, der einem ablaufverfolgungsbezogenen Ereignis zugeordnet ist. Zwei logische Vorgänge werden gestartet, eine im Hauptthread und die andere in einem Workerthread. Ein Fehlerereignis wird in beiden logischen Vorgängen protokolliert.

using System;
using System.Collections.Generic;
using System.Text;
using System.Diagnostics;
using System.Threading;

namespace CorrlationManager
{
    class Program
    {
        //private static TraceSource ts;
        static void Main(string[] args)
        {
            TraceSource ts = new TraceSource("MyApp");
            int i = ts.Listeners.Add(new ConsoleTraceListener());
            ts.Listeners[i].TraceOutputOptions = TraceOptions.LogicalOperationStack;
            ts.Switch = new SourceSwitch("MyAPP", "Verbose");
            // Start the logical operation on the Main thread.
            Trace.CorrelationManager.StartLogicalOperation("MainThread");
            ts.TraceEvent(TraceEventType.Error, 1, "Trace an error event.");
            Thread t = new Thread(new ThreadStart(ThreadProc));
            // Start the worker thread.
            t.Start();
            // Give the worker thread a chance to execute.
            Thread.Sleep(1000);
            Trace.CorrelationManager.StopLogicalOperation();
        }
        public static void ThreadProc()
        {
            TraceSource ts = new TraceSource("MyApp");
            int i = ts.Listeners.Add(new ConsoleTraceListener());
            ts.Listeners[i].TraceOutputOptions = TraceOptions.LogicalOperationStack;
            ts.Switch = new SourceSwitch("MyAPP", "Verbose");
            // Add another logical operation.
            Trace.CorrelationManager.StartLogicalOperation("WorkerThread");
            ts.TraceEvent(TraceEventType.Error, 1, "Trace an error event.");
            Trace.CorrelationManager.StopLogicalOperation();
        }
    }
}
// This sample generates the following output:
//MyApp Error: 1 : Trace an error event.
//    LogicalOperationStack=MainThread
//MyApp Error: 1 : Trace an error event.
//    LogicalOperationStack=WorkerThread, MainThread
Imports System.Collections.Generic
Imports System.Text
Imports System.Diagnostics
Imports System.Threading



Class Program
    
    'private static TraceSource ts;
    Shared Sub Main(ByVal args() As String) 
        Dim ts As New TraceSource("MyApp")
        Dim i As Integer = ts.Listeners.Add(New ConsoleTraceListener())
        ts.Listeners(i).TraceOutputOptions = TraceOptions.LogicalOperationStack
        ts.Switch = New SourceSwitch("MyAPP", "Verbose")
        ' Start the logical operation on the Main thread.
        Trace.CorrelationManager.StartLogicalOperation("MainThread")
        ts.TraceEvent(TraceEventType.Error, 1, "Trace an error event.")
        Dim t As New Thread(New ThreadStart(AddressOf ThreadProc))
        ' Start the worker thread.
        t.Start()
        ' Give the worker thread a chance to execute.
        Thread.Sleep(1000)
        Trace.CorrelationManager.StopLogicalOperation()
    
    End Sub
    
    Public Shared Sub ThreadProc() 
        Dim ts As New TraceSource("MyApp")
        Dim i As Integer = ts.Listeners.Add(New ConsoleTraceListener())
        ts.Listeners(i).TraceOutputOptions = TraceOptions.LogicalOperationStack
        ts.Switch = New SourceSwitch("MyAPP", "Verbose")
        ' Add another logical operation.
        Trace.CorrelationManager.StartLogicalOperation("WorkerThread")
        ts.TraceEvent(TraceEventType.Error, 1, "Trace an error event.")
        Trace.CorrelationManager.StopLogicalOperation()
    
    End Sub
End Class
' This sample generates the following output:
'MyApp Error: 1 : Trace an error event.
'    LogicalOperationStack=MainThread
'MyApp Error: 1 : Trace an error event.
'    LogicalOperationStack=WorkerThread, MainThread

Hinweise

Ablaufverfolgungen, die aus einem einzelnen logischen Vorgang generiert werden, können mit einer vorgangsspezifischen Identität markiert werden, um sie von Ablaufverfolgungen von einem anderen logischen Vorgang zu unterscheiden. Beispielsweise kann es nützlich sein, korrelierte Ablaufverfolgungen nach ASP.NET Anforderung zu gruppieren. Die CorrelationManager Klasse stellt Methoden bereit, mit denen eine logische Vorgangsidentität in einem threadgebundenen Kontext gespeichert und jedes vom Thread generierte Ablaufverfolgungsereignis automatisch mit der gespeicherten Identität kategorisiert wird.

Logische Vorgänge können auch geschachtelt werden. Die LogicalOperationStack Eigenschaft macht den Stapel geschachtelter logischer Vorgangsidentitäten verfügbar. Jeder Aufruf der StartLogicalOperation Methode verschiebt eine neue logische Vorgangsidentität auf den Stapel. Jeder Aufruf der StopLogicalOperation Methode füllt eine logische Vorgangsidentität aus dem Stapel.

Hinweis

Logische Vorgangsidentitäten sind Objekte, die die Verwendung eines Typs für eine logische Vorgangsidentität ermöglichen.

Eigenschaften

Name Beschreibung
ActivityId

Dient zum Abrufen oder Festlegen der Identität für eine globale Aktivität.

LogicalOperationStack

Ruft den logischen Vorgangsstapel aus dem Aufrufkontext ab.

Methoden

Name Beschreibung
Equals(Object)

Bestimmt, ob das angegebene Objekt dem aktuellen Objekt entspricht.

(Geerbt von Object)
GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
StartLogicalOperation()

Startet einen logischen Vorgang in einem Thread.

StartLogicalOperation(Object)

Startet einen logischen Vorgang mit der angegebenen Identität in einem Thread.

StopLogicalOperation()

Beendet den aktuellen logischen Vorgang.

ToString()

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

(Geerbt von Object)

Gilt für: