Marco, non mi è chiaro il tuo problema, ma ho affrontato in una mia APP un caso simile/uguale al tuo.
io procedo in questo modo:
accesso ; ftp.list per ottenere la lista dei file presenti;
poi aspetto il SUCCESS nella sub ListCompleted ed eseguo il Download del primo file presente nella lista;
poi aspetto il SUCCESS nella sub DownloadCompleted ... qui controllo se ci sono ancora file nella lista da processare e in caso positivo
eseguo un nuovo Download
in pratica dopo aver effettuato il primo download, gli altri devono essere eseguiti con il SUCCESS della sub DownloadCompleted.