Это общая проблема с FSW. Отладчик помогает, потому что он замедляет время. Когда процесс генерирует, скажем, событие Change, вы обычно не можете открыть файл сразу. Процесс все еще имеет открытый файл и заблокирован. Отладчик помогает, потому что ваша точка останова дает процессу время для закрытия файла.
Вам придется замедлить время в вашем коде. Избегайте вращения в обработчике событий, так как вы потеряете уведомления об изменениях. Лучший способ сделать это - поместить путь к файлу в поточно-безопасный список <>, который вы пытаетесь очистить с помощью таймера. Это также поможет вам справиться с несколькими уведомлениями об изменениях. И при проблемах с потоками пользовательского интерфейса FSW генерирует свои события в потоке потоков, из которого вы не можете обновить пользовательский интерфейс (но смотрите SynchronizingObject).