Одновременное перемещение каталогов с использованием C # - PullRequest
0 голосов
/ 14 сентября 2018

У меня возникла интересная проблема, связанная с переименованием каталога.

Проблема : родительская папка с множеством подпапок, имена которых указаны в последовательности Пример:

  • data-500
  • data-501
  • data-502
  • data- [n]

Каждый из вышеперечисленныхПапки содержит подпапки и файлы внутри.Последовательность имен очень важна, и они должны быть последовательными с этой нумерацией, как показано выше.

Есть случаи, когда некоторые из папок удаляются, и моя проблема здесь в том, чтобы переименовать каталоги снова, чтобы все получилосьв примере последовательности

, если он начинается с 500 до 600, а кто-то удалил 550, теперь эта логика должна снова переименовать все в порядке с 500 до 599

, поскольку родительская папка содержит огромное количествовложенных папок, мне нужно применить логику для запуска в PARALLEL

По сути, переименование папок в PARALLEL

Tried: Directory.Move (), который пытается переместить всесодержимое папок, которое в первую очередь тратит время, а затем конфликтует (генерирует исключение) при работе в параллельном режиме, поскольку другой поток может пытаться воспроизвести эту же папку.

Tried: VisalBasic..Rename ..(), который также приводит к тому же результату, что и просто оболочка над Directory.Move ()

Сокращение параллельной операцииОт n до 2 также не решает эту проблему.

Единственное, что работает, это Powershell RenameItem (работает 2 потока за раз), который отлично работает, но мне нужно что-то в C # (не работает powershell в C #, пожалуйста)

Итак, в общем, нужно переименовать директ (возможно, без перемещения) и запустить в параллельной логике.

Возможно ли это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...