CorrelationManager Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Met en correspondance des traces qui font partie d'une transaction logique.
public ref class CorrelationManager
public class CorrelationManager
type CorrelationManager = class
Public Class CorrelationManager
- Héritage
-
CorrelationManager
Exemples
L’exemple de code suivant illustre l’utilisation de la CorrelationManager classe en identifiant l’opération logique associée à un événement suivi. Deux opérations logiques sont démarrées, l’une dans le thread main et l’autre dans un thread worker. Un événement d’erreur est consigné dans les deux opérations logiques.
#using <System.dll>
using namespace System;
using namespace System::Collections::Generic;
using namespace System::Text;
using namespace System::Diagnostics;
using namespace System::Threading;
void ThreadProc()
{
TraceSource^ ts = gcnew TraceSource("MyApp");
int i = ts->Listeners->Add(gcnew ConsoleTraceListener());
ts->Listeners[i]->TraceOutputOptions = TraceOptions::LogicalOperationStack;
ts->Switch = gcnew SourceSwitch("MyAPP", "Verbose");
// Add another logical operation.
Trace::CorrelationManager->StartLogicalOperation("WorkerThread");
ts->TraceEvent(TraceEventType::Error, 1, "Trace an error event.");
Trace::CorrelationManager->StopLogicalOperation();
}
void main()
{
TraceSource^ ts = gcnew TraceSource("MyApp");
int i = ts->Listeners->Add(gcnew ConsoleTraceListener());
ts->Listeners[i]->TraceOutputOptions = TraceOptions::LogicalOperationStack;
ts->Switch = gcnew 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 = gcnew Thread(gcnew ThreadStart(ThreadProc));
// Start the worker thread.
t->Start();
// Give the worker thread a chance to execute.
Thread::Sleep(1000);
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
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
Remarques
Les traces générées à partir d’une seule opération logique peuvent être étiquetées avec une identité unique d’opération, afin de les distinguer des traces d’une autre opération logique. Par exemple, il peut être utile de regrouper les traces corrélées par ASP.NET demande. La CorrelationManager classe fournit les méthodes utilisées pour stocker une identité d’opération logique dans un contexte lié au thread et baliser automatiquement chaque événement de trace généré par le thread avec l’identité stockée.
Les opérations logiques peuvent également être imbriquées. La LogicalOperationStack propriété expose la pile d’identités d’opération logique imbriquées. Chaque appel à la StartLogicalOperation méthode envoie une nouvelle identité d’opération logique à la pile. Chaque appel à la StopLogicalOperation méthode fait apparaître une identité d’opération logique hors de la pile.
Notes
Les identités d’opération logique sont des objets qui permettent l’utilisation d’un type pour une identité d’opération logique.
Propriétés
ActivityId |
Obtient ou définit l'identité pour une activité globale. |
LogicalOperationStack |
Obtient la pile d'opération logique du contexte d'appel. |
Méthodes
Equals(Object) |
Détermine si l'objet spécifié est égal à l'objet actuel. (Hérité de Object) |
GetHashCode() |
Fait office de fonction de hachage par défaut. (Hérité de Object) |
GetType() |
Obtient le Type de l'instance actuelle. (Hérité de Object) |
MemberwiseClone() |
Crée une copie superficielle du Object actuel. (Hérité de Object) |
StartLogicalOperation() |
Démarre une opération logique sur un thread. |
StartLogicalOperation(Object) |
Démarre une opération logique avec l'identité spécifiée sur un thread. |
StopLogicalOperation() |
Arrête l'opération logique actuelle. |
ToString() |
Retourne une chaîne qui représente l'objet actuel. (Hérité de Object) |