Скачать отмену задержки в Xamarin Forms

85
7

Мне нужно загрузить pdf файл и сохранить его на устройстве. Я использовал процесс WebClient для загрузки файла и отображения прогресса при его загрузке.


CancellationTokenSource Token= new CancellationTokenSource(); //Initialize a token while start download
webClient.DownloadFileTaskAsync(new Uri(downloadurl), saveLocation); // Download file

Загрузка работает правильно. Чтобы отменить загрузку, которая выполняется, я использовал cancelationtokensource, как указано в следующей ссылке.


https://docs.microsoft.com/en-us/dotnet/standard/threading/cancellation-in-managed-threads


Token.Cancel(); //Cancellation download

try
{
// check whether download cancelled or not
Token.ThrowIfCancellationRequested();
if(Token.IsCancellationRequested)
{
//Changed button visibility
}
}
catch (OperationCanceledException ex)
{
}


Требуется больше секунд, чтобы отменить загрузку. Можете ли вы предложить мне уменьшить задержку при отмене загрузки?

спросил(а) 2017-10-25T09:11:00+03:00 2 года, 8 месяцев назад
1
Решение
119

Нам нужно зарегистрировать токен в процессе аннулирования webclient перед процессом downloadasync. Мы должны поддерживать порядок, как показано ниже,


//Initialize for download process
WebClient webClient = new WebClient();
CancellationTokenSource token = new CancellationTokenSource();

//register token into webclient
token.Register(webClient.CancelAsync);
try
{
webClient.DownloadFileTaskAsync(new Uri(downloadurl), saveLocation); // Download a file
}
catch(Exception ex)
{
//Change button visibility
}

Token.Cancel(); //Cancellation download put in cancel click button event

Не требуется даже миллисекунды, и отмена прекращается как на устройстве Xamarin.Android, так и на Xamarin.iOS.

ответил(а) 2017-11-08T07:33:00+03:00 2 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема