Предполагая, что у меня есть длительный поиск файлов, который в основном является просто рекурсивной функцией, как показано ниже (файлы 1M-100M). Если мой процесс будет остановлен во время сканирования файлов или остановлен по какой-либо причине, есть ли лучший способ реализовать «постоянное хранилище состояний» или «ContinueOnFailure» -функцию?
Или я полностью на неправильном пути, и что-то подобное даже не требуется или нуждается в совершенно ином подходе?
Требуется какой-либо совет, также не связанный с конкретным c языком программирования (реализация будет в C # / F #, если возможно), и, пожалуйста, извините, возможно, здесь используются неверные термины.
Дальнейшие предположения и мысли. Дубликаты или несколько отсутствующих файлов не являются проблемой. Дубликаты могут быть отфильтрованы, и можно ожидать, что отсутствующие / неактуальные файлы ожидаются, так как операция происходит в живой системе. Для подхода в оперативной памяти я мог бы придумать словарь, который отслеживает заполненные папки «наименьшей глубины».
Или разбить задачу, повторяя до достижения определенного порога подмножеств, а затем отслеживая каждое подмножество в базе данных?
Также взглянул на this . Это кажется непрактичным для больших сетевых дисков + меня беспокоит порядок перечисления?
let rec loop depth (someDir : DirectoryInfo) =
seq {
yield! someDir.EnumerateFiles ()
yield!
someDir.EnumerateDirectories ()
|> Seq.collect (loop (depth + 1))
}
let dir = DirectoryInfo "C:\\"
loop 0 dir