Как ОСТАНОВИТЬ загрузку WebClient - PullRequest
0 голосов
/ 17 октября 2018

При загрузке данных с использованием

byte[] data = await webClient.DownloadDataTaskAsync(uri);

или любого другого async метода, есть ли способ остановить загрузку?Я не хочу просто игнорировать результат.Я хочу прервать загрузку, которая может быть дорогой для мобильных устройств и может замедлить альтернативную загрузку, если пользователь отменил ее в пользу другой загрузки.

Я попытался

webClient.CancelAsync();

но, похоже, просто поднять TaskCanceledException после загрузка завершена.Я вижу это, оборачивая ожидаемую загрузку в блок try-catch.Улов называется долгое время после CancelAsync().

1 Ответ

0 голосов
/ 17 октября 2018

Вы можете продолжить использовать CancelAsync () , но вам нужно убедиться, что файл не отменен внутри события DownloadFileCompleted

webClient.DownloadFileCompleted += (s, e) =>
{
      if (e.Cancelled)
      {
          //cleanup delete partial file
          Client.Dispose();                    
          return;
      } 
      else 
      {/* the file is not cancelled, do what you need with it here, no TaskCanceledException would occure */}
 }
...