Anche quello è normale, se usi una chiamata bloccante e hai un solo thread (che è lo stesso della grafica) questo rimane inchiodato mentre avviene il download.
Hai fondamentalmente due possibilità:
- usi un backgroundworker in cui metti queste chiamate bloccanti, e aggiorni la grafica quando ciascuno dei download termina;
- tieni le chiamate asincrone, ma fai partire solo il primo download; il download successivo viene fatto partire quando viene generato dal webclient l'evento DownloadFileCompleted.