Я разработал такой продукт для клиента.Служба отслеживала количество папок на наличие новых файлов, и когда файлы были обнаружены, файлы были прочитаны, обработаны (напечатаны на принтерах штрих-кодов), заархивированы и удалены.
Мы использовали обнаруженный слой «обнаружитель»файлы с использованием FileSystemWatcher или опроса в зависимости от среды (поскольку FileSystemWatcher не является надежным при мониторинге, например общих папок samba), слой «считыватель файлов» и слой «процессор».
Уровень «обнаружитель» обнаружил файлы и поместилимена файлов в списке, который обрабатывается слоем «читатель файла».Слой «обнаружитель» сигнализировал, что появились новые файлы для обработки, установив событие, которого ждал слой «считыватель файлов».
Затем слой «считыватель файлов» читает файлы (используя функцию повтора, поскольку вы можете получать уведомления о новых файлах до того, как файлы будут полностью записаны процессом, который создает файл).
После того, как слой «считыватель файлов» прочитал файл, был создан новый поток «процессор» с использованием ThreadPool.QueueWorkItem для обработки содержимого файла.
Когда файл был обработан,исходный файл был скопирован в архив и удален из исходного местоположения.Архив также регулярно очищался, чтобы не затопить сервер.Архив отлично подходит для поиска и устранения неисправностей.
В течение более двух лет он уже использовался в производстве в различных средах и оказался очень надежным.