Не зная по-настоящему подробностей о том, почему вам нужно хранить всю работу в одном приложении и справляться со сложностью потоков, можно поспорить, что часть, которая генерирует файлы, и часть, которая передает файлы по FTP, в отдельных приложениях.
Разделение ответственности. Убедитесь, что каждое приложение выполняет только одну работу и выполняет ее правильно и быстро.
Один Serivce или приложение (рабочий стол / веб, который когда-либо) генерирует файлы.
Другая служба, которая просматривает папку и перемещает любые входящие файлы во временный архиватор, делает то, что ей нужно, FTP и удаляет.
Видя, что я не знаю ваши настройки и откуда вы берете контент для ваших файлов, запись в одном приложении может быть лучшим выбором именно так, как вы предлагаете.
В основном, чтобы ответить на ваш вопрос. Да, это звучит реально, что вы хотите сделать.
Как вы реализуете это, и что вам нравится в реализации, зависит от вас.
Если вы застряли где-то во время реализации, не стесняйтесь сообщать о любых проблемах в новой угрозе с некоторыми примерами кода о том, как реализована конкретная функция и с какой проблемой вы столкнулись.
До тех пор, гипотетически, любой подход, который, по вашему мнению, способен управлять тем, что вам нужно для достижения, является совершенно действительным.
EDIT
Видя, что вы заявили, что у вас уже есть приложение, которое генерирует готовые файлы, и у вас уже есть решение, которое для FTP означает использование двух отдельных приложений, звучит более правдоподобно.
Все, что вам нужно, - это обернуть службу вокруг решения FTP и счастливых дней.
Нет необходимости вмешиваться в исходное приложение, которое генерирует файлы, если оно уже работает.
Зачем рисковать, если вы не добавите в него функцию fTP, и у вас нет выбора.