Estoy escribiendo una solución donde uso algunos archivos de configuración que deberían poder editarse en tiempo de ejecución. He estado usando FileSystemWatcher
para este fin antes y nunca he tenido demasiados problemas, pero ahora está causando un CTD en el evento 'rename'.FileSystemWatcher causa bloqueo en el escritorio
Este (inútil) pieza de código volverá a crear el problema en mi configuración:
private static int _s_renamed;
private static int _s_created;
private static int _s_errors;
private static void monitorConfiguration(string configRootFolder)
{
var fsw = new FileSystemWatcher(configRootFolder, ConfigFilePattern)
{
NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName,
IncludeSubdirectories = false
};
fsw.Renamed += (sender, args) => ++_s_renamed; // <-- ! CTD efter this one !
fsw.Created += (sender, args) => ++_s_created;
fsw.Error += (sender, args) => ++_s_errors;
fsw.EnableRaisingEvents = true;
}
El accidente viene de FileSystemWatcher
que parece. Si configuro un punto de interrupción en el controlador de eventos para FileSystemWatcher.Renamed
, se golpea pero la aplicación falla cuando salgo de ella. Si configuro un punto de interrupción en el controlador de eventos FileSystemWatcher.Created
, esto no ocurre.
¿Alguna sugerencia?
EDIT 1: estoy ejecutando .NET 4 en un x64 de Windows 7 (Ultimate) plataforma he visto varias discusiones relativas a este tipo de problemas, pero todo se ha relacionado con la gente tratando de actualizar cosas UI (que debe hacerse desde el hilo principal/UI) desde los controladores de eventos. Es por eso que trato de incrementar algunos contadores en el código experimental.
¿Existe una excepción? – David
No, la aplicación se bloquea en el escritorio y parece que no puedo verla. Es una aplicación WPF y capturo todas las excepciones no controladas (Application.DispatcherUnhandledException) pero esta no está atrapada. –
¿Qué es un CTD y qué hace? – Gabe