Я создал программу, которая перемещает файлы в различные каталоги и обратно. Проблема, с которой я столкнулся, это когда вы пытаетесь переместить файл, а какая-то другая программа все еще использует его. И вы получаете ошибку. Оставить его там невозможно, поэтому я могу думать только о том, чтобы продолжать пытаться перемещать его снова и снова. Это, тем не менее, замедляет работу всей программы, поэтому я создаю новый поток, позволяю ему разобраться с файлом проблемы и перехожу к следующему. Большая проблема возникает, когда у вас слишком много этих проблемных файлов, и в программе теперь столько потоков пытается переместить эти файлы, что она просто вылетает с ошибкой kernel.dll. Вот пример кода, который я использую для перемещения файлов:
Public Sub MoveIt()
Try
File.Move(_FileName, _CopyToFileName)
Catch ex As Exception
Threading.Thread.Sleep(5000)
MoveIt()
End Try
End Sub
Как вы видите, я пытаюсь переместить файл, и если он дает ошибку, я жду и перемещаю его снова и снова. Я также пытался использовать FileInfo
, но это ПРЕКРАЩАЕТСЯ гораздо быстрее, чем просто использование объекта File
.
Так кто-нибудь нашел надежный способ перемещения файлов без ошибок?
Примечание: для сбоя требуется много файлов. В выходные все будет хорошо, но к концу дня в понедельник все готово.
UPDATE
Я ценю все идеи до сих пор. Возможно, я должен дать больше информации о том, что я делаю.
Все это делается в службе Windows. Файлы ДОЛЖНЫ быть перемещены. Я никак не могу оставить позади. Вот почему я должен попробовать снова и снова, чтобы переместить эти файлы. Файлы используются для импорта данных в различные базы данных. Кроме того, нет НИКАКОГО пользователя, чтобы сказать, если файл не может быть перемещен. Также эта программа обрабатывает ТЫСЯЧИ файлов в день.
Так с этим сказал. Как я могу иметь эффективную программу, которая может перемещать файлы без какого-либо взаимодействия с пользователем и гарантировать, что все файлы будут перемещены? Программы, которые создают эти файлы, в конце концов перестают их использовать. Они создаются FTP, Biztalk и другими различными службами.