Porady: zdarzenia dziennika dotyczące składników wielowątkowych
Podczas rejestrowania zdarzeń od składników wielowątkowe, względy wchodzić w grę.Należy podać środek identyfikujący wątek, z której pochodzą dane zdarzenie.Muszą również zapewnić, że wątki nie zakłóca siebie podczas rejestrowania zdarzeń.Aby uzyskać szczegółowe informacje, zobacz Zdarzenia dziennika i składniki wielowątkowe.
Aby użyć dzienników zdarzeń w wielowątkowych aplikacji
Zadeklarować i utworzyć dziennik zdarzeń.Aby uzyskać szczegółowe informacje, zobacz How to: Create and Remove Custom Event Logs.
Ustaw Name właściwości każdego wątku do identyfikator unikatowy.
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;
Utwórz nowy Source do dziennika zdarzeń oraz zestaw Name wartość unikatowy ciąg odpowiadający wątku.Szczegóły dotyczące tworzenia Source, zobacz 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");
Ustaw Source właściwość dziennik zdarzeń i nazwa wątku i wywołanie WriteEntry metody.
[!UWAGA]
Należy uzyskać blokadę wyłączności w dzienniku zdarzeń, przed wykonaniem tych operacji.
' 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"); }
Zobacz też
Zadania
Porady: koordynowanie wielu wątków wykonania
Wskazówki: tworzenie prostego składnika wielowątkowego za pomocą języka Visual Basic
Wskazówki: tworzenie prostego składnika wielowątkowego za pomocą języka C#
Informacje
Inne zasoby
How to: Create and Remove Custom Event Logs