Я пытаюсь выполнить синхронизацию файлов из локального источника в корзину S3, где я загружаю файлы в корзину S3, вычисляя контрольную сумму MD5 и помещая ее в метаданные для каждого файла. Проблема в том, что при этом я также проверил файлы, которые уже есть в месте назначения, чтобы избежать повторной загрузки. Я делаю это, создавая список файлов для загрузки, который не совпадает ни по имени, ни по MD5. Эта операция по извлечению метаданных для файлов S3 и вычислению MD5 для локальных файлов на лету и последующему их сопоставлению занимает много времени, поскольку у меня для сопоставления имеется от 200 000 до 500 000 файлов.
Есть ли лучший способ добиться этого, используя многопоточность или что-то еще. Я не очень представляю, как этого добиться в многопоточной среде, так как в конечном итоге мне нужен один список и несколько потоков, выполняющих обработку и добавление в один и тот же список. Любой пример кода или помощь очень ценится.
Это приложение для работы с Windows написано на C # с использованием платформы .NET 4.6.1.