Я пишу решение, в котором я использую некоторые файлы конфигурации, которые должны редактироваться во время выполнения.Раньше я использовал FileSystemWatcher
для этой цели и никогда не испытывал особых проблем с ним, но теперь он вызывает CTD для события 'rename'.
Этот (бесполезный) фрагмент кода воссоздает проблему вмои настройки:
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;
}
Авария происходит от FileSystemWatcher
, кажется.Если я устанавливаю точку останова в обработчике событий для FileSystemWatcher.Renamed
, она срабатывает, но приложение вылетает, когда я выхожу из нее.Если я установлю точку останова в обработчике событий FileSystemWatcher.Created
, этого не произойдет.
Есть предложения?
РЕДАКТИРОВАТЬ 1: Я использую .NET 4 на Windows 7 x64(Ultimate) платформа Я видел несколько дискуссий, касающихся проблем такого типа, но все они были связаны с людьми, пытающимися обновить содержимое пользовательского интерфейса (что должно быть сделано из основного потока / потока пользовательского интерфейса) из обработчиков событий.Вот почему я просто пытаюсь увеличить счетчики в экспериментальном коде.