DownloadOperation Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- 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
- 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.
- 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. |