DownloadOperation Classe

Définition

Effectue une opération de téléchargement asynchrone. L’exemple de transfert en arrière-plan illustre cette fonctionnalité. Pour obtenir une vue d’ensemble des fonctionnalités de transfert en arrière-plan, consultez Transfert de données en arrière-plan.

public ref class DownloadOperation sealed : IBackgroundTransferOperationPriority
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class DownloadOperation final : IBackgroundTransferOperationPriority
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class DownloadOperation : IBackgroundTransferOperationPriority
Public NotInheritable Class DownloadOperation
Implements IBackgroundTransferOperationPriority
Héritage
Object Platform::Object IInspectable DownloadOperation
Attributs
Implémente

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)
Fonctionnalités de l’application
internetClient internetClientServer privateNetworkClientServer

Exemples

Les exemples d’applications qui utilisent cette classe incluent l’exemple de transfert en arrière-plan.

L’exemple suivant montre comment configurer et commencer une opération de téléchargement de base.

using Windows.Foundation;
using Windows.Networking.BackgroundTransfer;
using Windows.Storage;

private async void StartDownload_Click(object sender, RoutedEventArgs e)
{
    try
    {
        Uri source = new Uri(serverAddressField.Text.Trim());
        string destination = fileNameField.Text.Trim();

        StorageFile destinationFile = await KnownFolders.PicturesLibrary.CreateFileAsync(
            destination, CreationCollisionOption.GenerateUniqueName);

        BackgroundDownloader downloader = new BackgroundDownloader();
        DownloadOperation download = downloader.CreateDownload(source, destinationFile);

        // Attach progress and completion handlers.
        HandleDownloadAsync(download, true);
    }
    catch (Exception ex)
    {
        LogException("Download Error", ex);
    }
}

Remarques

Au démarrage suivant après l’arrêt de l’application, votre application doit énumérer toutes les instances DownloadOperation existantes à l’aide de GetCurrentDownloadsAsync. Lorsqu’une application UWP utilisant le transfert en arrière-plan est arrêtée, les téléchargements incomplets persistent en arrière-plan. Si votre application est redémarrée après l’arrêt et que ces opérations incomplètes ne sont pas énumérées et réinitatives dans la session active, elles seront obsolètes et continuent d’occuper les ressources de l’appareil.

Le transfert en arrière-plan ne prend pas en charge les téléchargements simultanés du même URI. Ainsi, une application peut télécharger http://example.com/myfile.wmv une seule fois ou la télécharger à nouveau une fois le téléchargement précédent terminé. Une application ne doit pas démarrer simultanément deux téléchargements du même URI , car cela peut entraîner des fichiers tronqués.

Notes

Les opérations de téléchargement interrompues ou incomplètes ne peuvent être reprises que si le serveur accepte les demandes de plage.

Considérations relatives au délai d’expiration

  1. Lors de l’établissement d’une nouvelle connexion pour un téléchargement via TCP/SSL, la tentative de connexion est abandonnée si elle n’est pas établie dans les cinq minutes.
  2. Une fois la connexion établie, un message de requête HTTP qui n’a pas reçu de réponse dans les deux minutes est abandonné. En supposant qu’il existe une connectivité Internet, le transfert en arrière-plan effectue une nouvelle tentative de téléchargement jusqu’à trois fois. Si la connectivité Internet n’est pas détectée, d’autres tentatives ne sont pas effectuées tant qu’elle ne l’est pas.

Conseils de débogage

L’arrêt d’une session de débogage dans Microsoft Visual Studio est comparable à la fermeture de votre application ; les téléchargements sont suspendus et les téléchargements POST sont terminés. Même pendant le débogage, votre application doit énumérer, puis suspendre, reprendre, redémarrer ou annuler les téléchargements persistants.

Toutefois, si les mises à jour du projet Microsoft Visual Studio, telles que les modifications apportées au manifeste de l’application, nécessitent que l’application soit désinstallée et redéployée pour le débogage, GetCurrentDownloadsAsync ne peut pas énumérer les opérations persistantes créées à l’aide du déploiement d’application précédent.

Historique des versions

Version de Windows Version du SDK Valeur ajoutée
1709 16299 CurrentWebErrorStatus
1709 16299 GetDownloadedRanges
1709 16299 GetResultRandomAccessStreamReference
1709 16299 IsRandomAccessRequiredred
1709 16299 PlagesTéléchargement
1709 16299 RecoverableWebErrorStatuses
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

Propriétés

CostPolicy

Obtient et définit la stratégie de coût pour le téléchargement.

CurrentWebErrorStatus

WebErrorStatus d’un transfert, qui peut être surveillé pendant la durée de vie de DownloadOperation.

Group

Notes

Le groupe peut être modifié ou indisponible pour les versions après Windows 8.1. Utilisez plutôt TransferGroup.

Obtient une valeur de chaîne indiquant le groupe auquel appartient le transfert.

Guid

Il s’agit d’un identificateur unique pour une opération de téléchargement spécifique. Un GUID associé à une opération de téléchargement ne changera pas pendant la durée du téléchargement.

IsRandomAccessRequired

Propriété booléenne permettant d’activer l’accès aléatoire. La propriété doit avoir la valeur TRUE avant d’appeler StartAsync() sur un objet DownloadOperation pour utiliser la fonctionnalité d’accès aléatoire. Après avoir appelé StartAsync(), appelez GetResultRandomAccessStreamReference pour obtenir une référence au flux d’accès aléatoire et lire à partir de celui-ci.

Method

Obtient la méthode à utiliser pour le téléchargement.

Priority

Obtient ou définit la priorité de transfert de cette opération de téléchargement dans un BackgroundTransferGroup. Les valeurs possibles sont définies par BackgroundTransferPriority.

Progress

Obtient la progression actuelle de l’opération.

RecoverableWebErrorStatuses

Ensemble de valeurs WebErrorStatus que les applications anticipent que le téléchargement atteindra, et que les applications savent comment gérer.

RequestedUri

Obtient l’URI à partir duquel télécharger le fichier.

ResultFile

Renvoie l’objet IStorageFile fourni par l’appelant lors de la création de l’objet DownloadOperation à l’aide de CreateDownload.

TransferGroup

Obtient le groupe auquel appartient cette opération de téléchargement.

Méthodes

AttachAsync()

Retourne une opération asynchrone qui peut être utilisée pour surveiller la progression et l’achèvement du téléchargement joint. L’appel de cette méthode permet à une application d’attacher des opérations de téléchargement qui ont été démarrées dans un instance d’application précédent.

GetDownloadedRanges()

Retourne la liste complète des plages de fichiers qui ont été téléchargées jusqu’à présent.

GetResponseInformation()

Obtient les informations de réponse.

GetResultRandomAccessStreamReference()

Obtient une référence au flux d’accès aléatoire et lit à partir de celui-ci. Il est nécessaire de définir IsRandomAccessRequired sur TRUE avant d’appeler GetResultRandomAccessStreamReference.

GetResultStreamAt(UInt64)

Obtient la réponse partiellement téléchargée à la position spécifiée.

MakeCurrentInTransferGroup()

Hiérarchise l’opération de transfert de téléchargement (et tous les transferts qui la suivent dans le même groupe de transfert). L’appel de cette méthode sur un transfert qui n’appartient pas à un groupe de transfert n’a aucun effet.

Pause()

Interrompt une opération de téléchargement.

RemoveRequestHeader(String)

Utilisé pour supprimer un en-tête de requête HTTP.

Resume()

Reprend une opération de téléchargement en pause.

SetRequestHeader(String, String)

Utilisé pour définir un en-tête de requête HTTP.

StartAsync()

Démarre une opération de téléchargement asynchrone.

Événements

RangesDownloaded

Permet d’accéder à la progression du téléchargement incrémentiel.

S’applique à

Voir aussi