Si avevo provato anche il download asincrono. Comunque sono riuscito a risolvere
codice:
 

 public void PoolAndDownloadFile(Uri uri, string filePath)
        {
            WebClient webClient = new WebClient();
            byte[] downloadedBytes = webClient.DownloadData(uri);
            while (downloadedBytes.Length == 0)
            {
                Thread.Sleep(2000);
                downloadedBytes = webClient.DownloadData(uri);
            }
            Stream file = File.Open(filePath, FileMode.Create);
            file.Write(downloadedBytes, 0, downloadedBytes.Length);
            file.Close();
        }
Impiega circa 15 secondi ma vabene così.
Grazie a tutti voi lo stesso.
Arrivederci al prossimo problema