Почему NET movefile иногда оставляет исходный файл на жестком диске
У меня есть ситуация, по общему признанию легко исправленная, где у меня есть один однострочный фрагмент кода следующим образом:
My.Computer.FileSystem.MoveFile(f_source, f_dest, True)
Истина для опции перезаписи.
У меня есть экземпляр во время массового перемещения файла, где иногда, иногда иногда, исходный файл остается позади, но файл назначения успешно копируется.
Вокруг него есть сообщение об ошибке (VB.NET/try/catch), но ошибка не возникает. Кажется, это происходит только во время удаленного доступа (VPN), такая же операция на сайте не проявляется.
Я подозреваю, что это происходит во время некоторого заполнения буфера, так как движение к удаленному диску и от него является чем-то вроде круглого Робина.
С тех пор я добавил проверку после перемещения, чтобы увидеть, существуют ли оба файла и удалить источник, когда они существуют. Я могу подтвердить, что это произошло, и это до сих пор помогло решить мою проблему.
Я не использую никаких фоновых или потоковых операций. Я удивлен, что управление возвращается моей программе с ее незаконченным и без ошибок. Это известная проблема?
Я не проверял другие параметры Movefile и, конечно, я всегда мог просто скопировать, а затем удалить, так что это не важно, но он меня поймал.
1 ответ
Я бы предположил, что он следует тем же правилам на System.IO.File.Move
метод. В комментариях об этом говорится следующее:
Если вы попытаетесь переместить файл между томами диска и этот файл используется, файл будет скопирован в место назначения, но не будет удален из источника.
В вводе-выводе может быть какой-то тип задержки, особенно если происходит сканирование файлов любого типа (антивирус и т. Д.).