CorrelationManager Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Correleert traceringen die deel uitmaken van een logische transactie.
public ref class CorrelationManager
public class CorrelationManager
type CorrelationManager = class
Public Class CorrelationManager
- Overname
-
CorrelationManager
Voorbeelden
In het volgende codevoorbeeld wordt het gebruik van de CorrelationManager klasse gedemonstreerd door de logische bewerking te identificeren die is gekoppeld aan een traceringsgebeurtenis. Er worden twee logische bewerkingen gestart, een in de hoofdthread en de andere in een werkrolthread. Er wordt een foutgebeurtenis geregistreerd in beide logische bewerkingen.
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
Opmerkingen
Traceringen die zijn gegenereerd op basis van één logische bewerking, kunnen worden gelabeld met een unieke identiteit voor bewerkingen om deze te onderscheiden van traceringen van een andere logische bewerking. Het kan bijvoorbeeld handig zijn om gecorreleerde traceringen te groeperen op ASP.NET aanvraag. De CorrelationManager klasse biedt methoden die worden gebruikt om een logische bewerkingsidentiteit op te slaan in een thread-gebonden context en elke traceringsgebeurtenis die door de thread wordt gegenereerd, automatisch te taggen met de opgeslagen identiteit.
Logische bewerkingen kunnen ook worden genest. Met LogicalOperationStack de eigenschap wordt de stapel geneste logische bewerkingsidentiteiten weergegeven. Elke aanroep naar de StartLogicalOperation methode pusht een nieuwe logische bewerkingsidentiteit naar de stack. Elke aanroep naar de StopLogicalOperation methode verwijst naar een logische bewerkingsidentiteit van de stack.
Note
Identiteiten van logische bewerkingen zijn objecten, waardoor het gebruik van een type voor een logische bewerkingsidentiteit mogelijk is.
Eigenschappen
| Name | Description |
|---|---|
| ActivityId |
Hiermee haalt u de identiteit voor een globale activiteit op of stelt u deze in. |
| LogicalOperationStack |
Hiermee haalt u de logische bewerkingsstack op uit de aanroepcontext. |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Bepaalt of het opgegeven object gelijk is aan het huidige object. (Overgenomen van Object) |
| GetHashCode() |
Fungeert als de standaardhashfunctie. (Overgenomen van Object) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| StartLogicalOperation() |
Hiermee start u een logische bewerking op een thread. |
| StartLogicalOperation(Object) |
Hiermee start u een logische bewerking met de opgegeven identiteit op een thread. |
| StopLogicalOperation() |
Hiermee stopt u de huidige logische bewerking. |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |