Du denkst zu sequenziell, asynchrone Operationen geschehen aber immer eventbasiert.
Du beginnst damit, dass du die erste Datei aus der Liste downloadest, dann machst du erst mal gar nichts mehr. Sobald dann DownloadFileCompletet ausgelöst wird, downloadest du die zweite Datei und mehr nicht. Wird jetzt wieder DownloadFileCompleted ausgelöst, downloadest du die dritte Datei und immer so weiter, bis es keine Dateien mehr in der Liste gibt.
Du beginnst damit, dass du die erste Datei aus der Liste downloadest, dann machst du erst mal gar nichts mehr. Sobald dann DownloadFileCompletet ausgelöst wird, downloadest du die zweite Datei und mehr nicht. Wird jetzt wieder DownloadFileCompleted ausgelöst, downloadest du die dritte Datei und immer so weiter, bis es keine Dateien mehr in der Liste gibt.