C# Catching exception which is occurring on ThreadPool

Я исследую некоторые сбои в моем приложении, вызванные исключением Win32, и я понял, что это должно происходить в пуле потоков, который заботится об обработчике события EventLog.EntryWrittenEventHandler в моем приложении. Я настроил это так:

// Create the event log monitor
eventLog.Log = "Application";
eventLog.EnableRaisingEvents = true;
eventLog.EntryWritten += new EntryWrittenEventHandler(EventLogMonitor);

EventLogMonitor является обработчиком моего события. Мне интересно, есть ли у кого-нибудь идеи, где я могу узнать, что вызывает это исключение. Похоже, что для прослушивания событий создается ThreadPoolWaitOrTimerCallback, в котором нет моего кода, и если исключение происходит из-за этого, я просто не вижу, как решить эту проблему. Любая помощь будет очень признательна!

Вот вывод !clrstack в 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] 

Если это поможет, мое приложение просто проверяет идентификатор события каждой записи, записанной в журнал событий, и если он совпадает с одним из определенного набора идентификаторов, то я записываю его в журнал. Сбои происходят очень редко, и исключением является исключение System.ComponentModel.Win32 с сообщением 'Access is denied'. Похоже, что это может быть проблема с разрешениями, но почему он может работать нормально в течение определенного периода времени, а затем внезапно аварийно завершить работу с этим.

10
задан Cœur 16 April 2017 в 08:45
поделиться