Я мог бы настроить систему очередей и обработки сообщений для этого.
Один процесс / поток / служба будет контролировать FTP-сервер, а при появлении новых файлов захватывать их и помещать в очередь (возможно, MSMQ или просто промежуточную папку и т. Д.)
Другой процесс отслеживает эту очередь, и когда файл появляется, он захватывает его и делает водяные знаки / метаданные / и т. Д., А затем помещает его в другую очередь / папку.
Другой процесс отслеживает эту очередь и захватывает новые файлы для архивирования. После архивирования перейдите в другую очередь.
... и т. Д.
Вы можете настроить «рабочие диспетчеры» в конце каждой очереди, чтобы захватывать файлы и отправлять их в любое количество рабочих потоков.
Вам не обязательно разбивать его на множество отдельных процессов и очередей - решать вам. «Очереди» также могут быть реализованы различными способами. Вы могли бы взглянуть на MSMQ как на начало, но вы могли бы также подумать о перемещении файлов между папками и т. Д. WCF и Windows Workflow Foundation могут оказаться хорошими технологиями для первого взгляда.