Я использую DownloadFileAsync
метод WebClient
для загрузки некоторых файлов с сервера, и я не могу не заметить, что при неформальном тестировании моего кода в VS2010 он блокируется примерно на 3 секунды, пока это начинается, что, на мой взгляд, своего рода побеждает цель в первую очередь.
Вот соответствующий фрагмент кода:
WebClient downloader = new WebClient();
downloader.DownloadProgressChanged += new DownloadProgressChangedEventHandler(updateDownloadProgress);
downloader.DownloadFileCompleted += new System.ComponentModel.AsyncCompletedEventHandler(downloadCompleted);
var current_map = map_downloads[0];//string with filename, map_downloads is List<string>
var path = System.IO.Path.GetTempFileName();
downloaded_maps.Add(path);//adding the temp file to a List<string>
downloader.DownloadFileAsync(new Uri(MAP_BASE + current_map), path); //MAP_BASE is a string containing the base url
Я использую DownloadFileAsync
, чтобы не блокировать пользовательский интерфейс, пока приложение загружает файл размером ~ 100 МБ. Очевидно, что если пользовательский интерфейс блокируется на 3 секунды во время вызова, это несколько снижает полезность, если не полностью.
Я относительно неопытен в C # /. Net (3-4 года назад я делал кучу вещей .Net 2.0, IIRC, но сейчас я в основном переучиваю его).