4

Ich muss eine PDF-Datei herunterladen und im Gerät speichern. Ich habe den WebClient-Prozess verwendet, um eine Datei herunterzuladen und den Fortschritt beim Herunterladen anzuzeigen.Download Abbrechen Verzögerung in Xamarin Forms

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

Der Download funktioniert ordnungsgemäß. Um den laufenden Download abzubrechen, habe ich cancelingtokensource wie im folgenden Link erwähnt verwendet.

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) 
{ 
} 

Es braucht mehr Sekunden, um den Download abzubrechen. Können Sie mir bitte vorschlagen, die Verzögerung beim Abbrechen des Downloads zu reduzieren?

+0

Könnten Sie bitte den vollständigen Code posten, der die Download-Aufgabe abbricht? –

Antwort

0

Wir müssen Token in WebClient Async-Prozess abbrechen vor Downloadasync-Prozess registrieren. Wir müssen aufrechterhalten, um wie unten,

//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 

Es nicht einmal nimmt Millisekunden und Stornierung funktioniert gut in beiden Xamarin.Android und Xamarin.iOS Gerät.