CorrelationManager Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Correlaciona rastreamentos que fazem parte de uma transação lógica.
public ref class CorrelationManager
public class CorrelationManager
type CorrelationManager = class
Public Class CorrelationManager
- Herança
-
CorrelationManager
Exemplos
O exemplo de código a seguir demonstra o uso da CorrelationManager classe identificando a operação lógica associada a um evento rastreado. Duas operações lógicas são iniciadas, uma no thread main e outra em um thread de trabalho. Um evento de erro é registrado em ambas as operações lógicas.
#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
Comentários
Os rastreamentos gerados a partir de uma única operação lógica podem ser marcados com uma identidade exclusiva da operação, a fim de distingui-los dos rastreamentos de uma operação lógica diferente. Por exemplo, pode ser útil agrupar rastreamentos correlacionados por ASP.NET solicitação. A CorrelationManager classe fornece métodos usados para armazenar uma identidade de operação lógica em um contexto associado a thread e marcar automaticamente cada evento de rastreamento gerado pelo thread com a identidade armazenada.
As operações lógicas também podem ser aninhadas. A LogicalOperationStack propriedade expõe a pilha de identidades de operação lógica aninhadas. Cada chamada para o StartLogicalOperation método envia por push uma nova identidade de operação lógica para a pilha. Cada chamada para o StopLogicalOperation método exibe uma identidade de operação lógica fora da pilha.
Observação
Identidades de operação lógica são objetos, permitindo o uso de um tipo para uma identidade de operação lógica.
Propriedades
ActivityId |
Obtém ou define a identidade de uma atividade global. |
LogicalOperationStack |
Obtém a pilha de operação lógica do contexto da chamada. |
Métodos
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
StartLogicalOperation() |
Inicia uma operação lógica em um thread. |
StartLogicalOperation(Object) |
Inicia uma operação lógica com a identidade especificada em um thread. |
StopLogicalOperation() |
Interrompe a operação lógica atual. |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |