Это вполне нормально, одна из вещей, которую должна выполнять многозадачная операционная система. Каталог фактически помечен для удаления, но его пока нельзя удалить, поскольку один или несколько процессов имеют дескриптор, открытый в каталоге. В случае с Windows это обычно процесс, который использует каталог в качестве рабочего каталога по умолчанию. Или, может быть, у вас открыто окно проводника, в котором вы видите, как ваша программа выполняет свою работу. Проводник использует ReadDirectoryChangesW (), чтобы получать уведомления об изменениях в каталоге, чтобы он знал, когда обновлять представление.
Каталог будет физически удален с диска, как только последний дескриптор будет закрыт. Хотя он существует в этом зомбированном состоянии, любая попытка что-либо сделать с каталогом приведет к ошибке доступа (код ошибки Windows 5).
Вам необходимо учитывать это поведение в вашей программе. Определенно удалите второй тест Directory :: Exists (), если вы не получили исключение из вызова Delete, вам нужно будет предположить, что каталог был удален. Это будет точно, в конце концов.