Я пишу решение, где я использую некоторые файлы конфигурации, которые должны быть доступны для редактирования во время выполнения. Я использовал 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) Я видел несколько обсуждений по этим типам проблем, но все они были связаны с людьми, пытающимися обновить материал пользовательского интерфейса (который должен выполняться из основного/пользовательского потока) из обработчиков событий. Поэтому я просто пытаюсь увеличить количество счетчиков в экспериментальном коде.