CorrelationManager Osztály

Definíció

Összeveti azokat a nyomkövetéseket, amelyek egy logikai tranzakció részei.

public ref class CorrelationManager
public class CorrelationManager
type CorrelationManager = class
Public Class CorrelationManager
Öröklődés
CorrelationManager

Példák

Az alábbi példakód bemutatja az osztály használatát egy CorrelationManager nyomkövetési eseményhez társított logikai művelet azonosításával. Két logikai művelet indul el, az egyik a fő szálban, a másik pedig egy feldolgozószálban. A rendszer mindkét logikai műveletben naplóz egy hibaeseményt.

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

Megjegyzések

Az egyetlen logikai műveletből létrehozott nyomkövetések művelet-egyedi identitással címkézhetők fel, hogy megkülönböztessék őket egy másik logikai művelet nyomkövetéseitől. Hasznos lehet például a korrelált nyomkövetések csoportosítása ASP.NET kérés alapján. Az CorrelationManager osztály metódusokat biztosít egy logikai művelet identitásának szálhoz kötött környezetben való tárolására, és a szál által generált nyomkövetési események automatikus címkézésére a tárolt identitással.

A logikai műveletek beágyazottak is lehetnek. A LogicalOperationStack tulajdonság a beágyazott logikai műveleti identitások halmát teszi elérhetővé. A metódus minden hívása StartLogicalOperation egy új logikai művelet identitását küldi a verembe. A metódus minden hívása StopLogicalOperation egy logikai műveleti identitást hoz létre a veremből.

Note

A logikai műveleti identitások objektumok, amelyek lehetővé teszik egy logikai művelet identitástípusának használatát.

Tulajdonságok

Name Description
ActivityId

Lekéri vagy beállítja egy globális tevékenység identitását.

LogicalOperationStack

Lekéri a logikai műveleti vermet a híváskörnyezetből.

Metódusok

Name Description
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
StartLogicalOperation()

Logikai műveletet indít el egy szálon.

StartLogicalOperation(Object)

Logikai műveletet indít el a megadott identitással egy szálon.

StopLogicalOperation()

Leállítja az aktuális logikai műveletet.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

A következőre érvényes: