Bagikan melalui


DownloadOperation Kelas

Definisi

Melakukan operasi pengunduhan asinkron. Sampel transfer Latar Belakang menunjukkan fungsionalitas ini. Untuk gambaran umum kemampuan Transfer Latar Belakang, lihat Mentransfer data di latar belakang.

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
Warisan
Object Platform::Object IInspectable DownloadOperation
Atribut
Penerapan

Persyaratan Windows

Rangkaian perangkat
Windows 10 (diperkenalkan dalam 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (diperkenalkan dalam v1.0)
Kemampuan aplikasi
internetClient internetClientServer privateNetworkClientServer

Contoh

Aplikasi sampel yang menggunakan kelas ini mencakup sampel transfer Latar Belakang.

Contoh berikut menunjukkan cara mengonfigurasi dan memulai operasi pengunduhan dasar.

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

Keterangan

Pada start-up berikutnya setelah penghentian aplikasi, aplikasi Anda harus menghitung semua instans DownloadOperation yang ada menggunakan GetCurrentDownloadsAsync. Ketika aplikasi UWP yang menggunakan Transfer Latar Belakang dihentikan, unduhan yang tidak lengkap tetap ada di latar belakang. Jika aplikasi Anda dimulai ulang setelah penghentian dan operasi yang tidak lengkap ini tidak dijumlahkan dan diperkenalkan kembali ke sesi saat ini, maka mereka akan kedaluarsa dan terus menempati sumber daya perangkat.

Transfer latar belakang tidak mendukung unduhan bersamaan dari Uri yang sama. Jadi aplikasi dapat mengunduh http://example.com/myfile.wmv sekali, atau mengunduhnya lagi setelah unduhan sebelumnya selesai. Aplikasi tidak boleh memulai dua unduhan Uri yang sama secara bersamaan, karena ini dapat mengakibatkan file terpotong.

Catatan

Operasi pengunduhan yang dijeda atau tidak lengkap hanya dapat dilanjutkan jika server menerima permintaan rentang.

Pertimbangan waktu habis

  1. Saat membuat koneksi baru untuk unduhan melalui TCP/SSL, upaya koneksi dibatalkan jika tidak dibuat dalam waktu lima menit.
  2. Setelah koneksi dibuat, pesan permintaan HTTP yang belum menerima respons dalam waktu dua menit dibatalkan. Dengan asumsi ada konektivitas Internet, Transfer Latar Belakang akan mencoba kembali unduhan hingga tiga kali. Jika konektivitas Internet tidak terdeteksi, upaya tambahan tidak akan dilakukan sampai.

Panduan Penelusuran Kesalahan

Menghentikan sesi penelusuran kesalahan di Microsoft Visual Studio sebanding dengan menutup aplikasi Anda; unduhan dijeda dan unggahan POST dihentikan. Bahkan saat penelusuran kesalahan, aplikasi Anda harus menghitung lalu menjeda, melanjutkan, memulai ulang, atau membatalkan unduhan yang bertahan.

Namun, jika pembaruan proyek Microsoft Visual Studio, seperti perubahan pada manifes aplikasi, mengharuskan aplikasi dihapus instalannya dan disebarkan ulang untuk penelusuran kesalahan, GetCurrentDownloadsAsync tidak dapat menghitung operasi persisten yang dibuat menggunakan penyebaran aplikasi sebelumnya.

Riwayat versi

Versi Windows Versi SDK Nilai ditambahkan
1709 16299 CurrentWebErrorStatus
1709 16299 GetDownloadedRanges
1709 16299 GetResultRandomAccessStreamReference
1709 16299 IsRandomAccessRequired
1709 16299 RentangUnduh
1709 16299 RecoverableWebErrorStatuses
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

Properti

CostPolicy

Mendapatkan dan menetapkan kebijakan biaya untuk unduhan.

CurrentWebErrorStatus

WebErrorStatus transfer, yang dapat dipantau selama masa pakai DownloadOperation.

Group

Catatan

Grup dapat diubah atau tidak tersedia untuk rilis setelah Windows 8.1. Sebagai gantinya, gunakan TransferGroup.

Mendapatkan nilai string yang menunjukkan grup tempat transfer berada.

Guid

Ini adalah pengidentifikasi unik untuk operasi pengunduhan tertentu. GUID yang terkait dengan operasi pengunduhan tidak akan berubah selama durasi pengunduhan.

IsRandomAccessRequired

Properti boolean untuk mengaktifkan akses acak. Properti harus diatur ke TRUE sebelum memanggil StartAsync() pada objek DownloadOperation untuk menggunakan fitur akses acak. Setelah memanggil StartAsync(), panggil GetResultRandomAccessStreamReference untuk mendapatkan referensi ke aliran akses acak dan baca darinya.

Method

Mendapatkan metode yang digunakan untuk pengunduhan.

Priority

Mendapatkan atau mengatur prioritas transfer operasi pengunduhan ini ketika berada dalam BackgroundTransferGroup. Nilai yang mungkin ditentukan oleh BackgroundTransferPriority.

Progress

Mendapatkan kemajuan operasi saat ini.

RecoverableWebErrorStatuses

Sekumpulan nilai WebErrorStatus yang diantisipasi aplikasi akan mencapai unduhan, dan bahwa aplikasi tahu cara menanganinya.

RequestedUri

Mendapatkan URI untuk mengunduh file.

ResultFile

Mengembalikan objek IStorageFile yang disediakan oleh pemanggil saat membuat objek DownloadOperation menggunakan CreateDownload.

TransferGroup

Mendapatkan grup tempat operasi pengunduhan ini berada.

Metode

AttachAsync()

Mengembalikan operasi asinkron yang dapat digunakan untuk memantau kemajuan dan penyelesaian unduhan yang dilampirkan. Memanggil metode ini memungkinkan aplikasi untuk melampirkan operasi pengunduhan yang dimulai di instans aplikasi sebelumnya.

GetDownloadedRanges()

Mengembalikan daftar lengkap rentang file yang telah diunduh sejauh ini.

GetResponseInformation()

Mendapatkan informasi respons.

GetResultRandomAccessStreamReference()

Mendapatkan referensi ke aliran akses acak dan membacanya. Anda perlu mengatur IsRandomAccessRequired ke TRUE sebelum memanggil GetResultRandomAccessStreamReference.

GetResultStreamAt(UInt64)

Mendapatkan respons yang diunduh sebagian pada posisi yang ditentukan.

MakeCurrentInTransferGroup()

Memprioritaskan operasi transfer unduhan (dan transfer apa pun yang mengikutinya dalam grup transfer yang sama). Memanggil metode ini pada transfer yang bukan milik grup transfer tidak berpengaruh.

Pause()

Menjeda operasi pengunduhan.

RemoveRequestHeader(String)

Digunakan untuk menghapus header permintaan HTTP.

Resume()

Melanjutkan operasi pengunduhan yang dijeda.

SetRequestHeader(String, String)

Digunakan untuk mengatur header permintaan HTTP.

StartAsync()

Memulai operasi pengunduhan asinkron.

Acara

RangesDownloaded

Menyediakan akses ke kemajuan pengunduhan bertahap.

Berlaku untuk

Lihat juga