Sto analizzando alcuni arresti anomali nella mia applicazione causati da un'eccezione Win32 e ho ridotto il limite che deve essere presente nel threadpool che si occupa del gestore di eventi EventLog.EntryWrittenEventHandler
nel mio applicazione. Ho impostato questo in questo modo:C# Eccezione di cattura che si sta verificando su ThreadPool
// Create the event log monitor
eventLog.Log = "Application";
eventLog.EnableRaisingEvents = true;
eventLog.EntryWritten += new EntryWrittenEventHandler(EventLogMonitor);
EventLogMonitor
è il gestore per il mio evento. Mi chiedo se qualcuno abbia qualche idea su dove posso scoprire che cosa sta causando questa eccezione. Sembra che per ascoltare gli eventi sia stato impostato uno ThreadPoolWaitOrTimerCallback
, che non avrebbe nessuno del mio codice su di esso, e se l'eccezione si sta verificando su questo non vedo come affrontare questo problema. Qualsiasi aiuto è davvero apprezzato !!
Ecco l'output di clrstack in WinDBG:!
0:008> !clrstack
OS Thread Id: 0x106c (8)
ESP EIP
049df1c8 7756f871 [HelperMethodFrame: 049df1c8]
049df26c 73ce6fa0 System.Diagnostics.EventLog.get_OldestEntryNumber()
049df27c 73bf24ed System.Diagnostics.EventLog.CompletionCallback(System.Object)
049df2c4 73bf0fe4 System.Diagnostics.EventLog.StaticCompletionCallback(System.Object, Boolean)
049df2f4 744fc3b8 System.Threading._ThreadPoolWaitOrTimerCallback.WaitOrTimerCallback_Context(System.Object, Boolean)
049df300 744fc373 System.Threading._ThreadPoolWaitOrTimerCallback.WaitOrTimerCallback_Context_f(System.Object)
049df304 7400027f System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
049df31c 744fc477 System.Threading._ThreadPoolWaitOrTimerCallback.PerformWaitOrTimerCallback(System.Object, Boolean)
049df4ac 74991b5c [GCFrame: 049df4ac]
In caso aiuta, la mia domanda è solo controllando l'ID evento di ogni ingresso scritti nel registro degli eventi, e se corrisponde a uno di un certo set di ID allora lo registro. Gli arresti anomali si verificano raramente e l'eccezione è un'eccezione System.ComponentModel.Win32 con messaggio "Accesso negato". Sembra che potrebbe trattarsi di un problema di autorizzazioni, ma perché funzionerebbe bene per un certo periodo e poi improvvisamente si blocca con questo.
Che tipo di eccezione è vero? –
Eccezione System.ComponentModel.Win32 con messaggio "Accesso negato". La cosa strana è che accade molto raramente, la mia applicazione che funziona come un servizio può andare per giorni e poi improvvisamente si blocca con questo .. – DukeOfMarmalade
È possibile che si stia tentando di creare la propria origine evento, mai utilizzata in precedenza, e che si blocca solo allora? –