L'abandon d'un client web.DownloadFileAsync opération
Quelle est la meilleure façon d'annuler un DownloadFileAsync fonctionnement en toute sécurité?
J'ai un thread en arrière-plan (le travailleur) qui lance le téléchargement et la gestion d'autres aspects de celui-ci et que j'arrive à la fin quand je vois que le fil est CancellationPending == true.
Après le coup d'envoi de la télécharger, le fil va s'asseoir et de tourner jusqu'à ce que le téléchargement est terminé, ou que le fil est annulée.
Si le thread est annulé, je veux annuler le téléchargement. Est-il une norme de langage pour le faire? J'ai essayé CancelAsync
, mais j'obtiens un WebException d'elle (avorté). Je ne suis pas sûr que c'est un moyen propre de faire de l'annuler.
Grâce.
Edit: la première exception est l'objet et de l'jetés l'un sur le flux interne (pile):
System.dll!Système.Net.Les Sockets.NetworkStream.EndRead(Système D'.IAsyncResult asyncResult)
Système.dll!Système.Net.PooledStream.EndRead(Système D'.IAsyncResult asyncResult)
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr pourquoi vous obtenez une exception à partir de l'appelant CancelAsync.
Je utiliser le client web pour gérer les téléchargements en parallèle de notre projet actuel, et sur appel de CancelAsync l'événement
DownloadFileCompleted
est soulevée par le service WebClient, où la propriétéCancelled
est vrai. Mon gestionnaire d'événement ressemble à ceci:Et l'annulation de la méthode est simple: