Protokoly událostí a vícevláknové komponenty
Jsou protokoly událostí pro sledování, které významné události, pokud je aplikace spuštěna.Protokoly událostí můžete zaznamenat informace, které mohou být užitečné při řešení potíží nebo výkonu analýzy.Protokolování událostí s komponentami s více podprocesy jsou další požadavky.Nejprve musí být mechanismus pro identifikaci podproces protokolování zprávy.Druhý podproces bezpečnosti musí brát v úvahu při interakci s protokolu událostí.Podproces pokusu o zápis zprávy musí získat výhradní zámek v protokolu zamezení sporech.Přehled protokolů událostí naleznete v tématu Správa protokolů událostí.Další informace o bezpečnostní vlákno, viz Podprocesu komponenty.
Identifikovat každý podproces, byste měli nastavit Thread.Name vlastnost.Tato vlastnost přijímá a vrací String hodnotu a lze nastavit jedinečný identifikátor pro každý podproces.Tuto hodnotu lze předat pak EventLog.CreateEventSource metody určit umístění vlákna jako Zdroj události pro každý podproces.Při protokolování událostí, můžete nastavit umístění vlákna Source vlastnost názvu, čímž se zajistí přesné protokolování událostí v protokolu událostí.
Při spuštění v prostředí s více podprocesy více řádků kódu, je důležité, aby podprocesy získat výhradní uzamčení v protokolu událostí před spuštěním libovolného kódu.Například zvažte následující řádky kódu v prostředí s více podprocesy:
MyEventLog.Source = Threading.Thread.CurrentThread.Name.ToString
EventLog.WriteEntry("What thread did this come from?", "myApplication")
MyEventLog.Source = System.Threading.Thread.CurrentThread.Name.ToString();
EventLog.WriteEntry("What thread did this come from?", "myApplication");
Pokud více podprocesů při vykonávání těchto řádků současně, pokud je možné změnit jeden podproces EventLog.Source vlastnost protokolu událostí a psát zprávy po změnil vlastnosti jiného podprocesu.Aby tyto podmínky použití Příkaz SyncLock (Visual Basic) nebo lock prohlášení (C#) získat výhradní zámek objektu před spuštěním kódu z více podprocesů.Pomocí uzamčení, v předchozím příkladu by nyní vypadat takto:
SyncLock MyEventLog
MyEventLog.Source = System.Threading.Thread.CurrentThread.Name.ToString
EventLog.WriteEntry("What thread did this come from?", "myApplication")
End SyncLock
lock(MyEventLog)
{
MyEventLog.Source = Threading.Thread.CurrentThread.Name.ToString();
EventLog.WriteEntry("What thread did this come from?",
"myApplication");
}
Můžete také použít Debug a Trace třídy protokolu událostí, které nastanou ve víceprocesových aplikacích.Tyto třídy jsou statické třídy, které umožňují odeslat výstup výstupní okno, okno konzoly, textového souboru nebo protokolu událostí nebo jakýchkoli jiných počet objektů.Podrobnosti naleznete v tématu trasování a nastavení aplikace v jazyce Visual Basic a Visual C#.
Viz také
Úkoly
Postupy: Protokolování událostí pro vícevláknové komponenty