Como: Eventos de log para componentes multissegmentados
A o registrar eventos de componentes multissegmentados, considerações especiais entradas execução.Você deve fornecer uma maneira de identificar o encadeamento de que o evento veio.Você também deve garantir que os segmentos não interfiram um com o outro para registrar eventos.Para obter detalhes, consulte:Logs de Eventos e componentes multissegmentados.
Para usar o evento de entrada aplicativos multissegmentados
Declare e crie o log de eventos.Para obter detalhes, consulte:How to: Create and Remove Custom Event Logs.
Defina a propriedade de Name de cada segmento para um identificador exclusivo.
Dim X as Integer X = 0 Dim MyThread as New Threading.Thread(AddressOf MyMethod) MyThread.Name = "Thread number " & X.ToString ' Increments X so no other threads will share the same name. X += 1
int X; X = 0; Thread MyThread = new Thread(new ThreadStart(MyMethod)); MyThread.Name = "Thread Number " + X.ToString(); // Increments X so no other threads will share the same name. X += 1;
Crie uma nova Source para o log de eventos, e defina Name a um valor de cadeia de caracteres exclusiva que corresponde ao segmento.Para obter detalhes sobre como criar Source, consulte How to: Add Your Application as a Source of Event Log Entries.
Imports System.Threading ' Checks to see if there already is a source with the name of the ' thread. If Not EventLog.SourceExists(Thread.CurrentThread.Name.ToString, _ "myApplication") Then ' Creates a source with the name of the thread EventLog.CreateEventSource(Thread.CurrentThread.Name.ToString, _ "MyApplication") End If
// These lines go at the top of the code using System.Threading; using System.Diagnostics; // Checks to see if there already is a source with the name of the // thread. if (!EventLog.SourceExists(CurrentThread.Name.ToString())) // Creates a source with the name of the thread. EventLog.CreateEventSource(CurrentThread.Name.ToString(), "MyApplication");
Defina a propriedade de Source de log de eventos para o nome de segmento e chama o método de WriteEntry .
Observação Certifique-se de obter um bloqueio exclusivo no log de eventos antes de continuar com essas operações.
' Use the SyncLock keyword to obtain an exclusive lock on an object. SyncLock MyEventLog MyEventLog.Source = Thread.CurrentThread.Name.ToString EventLog.WriteEntry(Thread.CurrentThread.Name.ToString, _ "Error in Widget 42") End SyncLock
// Use the lock keyword to obtain an exclusive lock on an object lock(MyEventLog) { MyEventLog.Source = Thread.CurrentThread.Name.ToString(); EventLog.WriteEntry(Thread.CurrentThread.Name.ToString(), "Error in Widget 42"); }
Consulte também
Tarefas
Como: Vários segmentos de coordenadas de execução
Passo a passo: Criando um componente com simples com Visual Basic
Passo a passo: Criando um componente com simples com o visual C#
Referência
Outros recursos
How to: Create and Remove Custom Event Logs