Поделиться через


DownloadOperation Класс

Определение

Выполняет асинхронную операцию скачивания. Эта функция демонстрируется в примере фоновой передачи . Общие сведения о возможностях фоновой передачи см. в разделе Передача данных в фоновом режиме.

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
Наследование
Object Platform::Object IInspectable DownloadOperation
Атрибуты
Реализации

Требования к Windows

Семейство устройств
Windows 10 (появилось в 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (появилось в v1.0)
Возможности приложения
internetClient internetClientServer privateNetworkClientServer

Примеры

Примеры приложений, использующих этот класс, включают пример фоновой передачи данных.

В следующем примере показано, как настроить и начать базовую операцию скачивания.

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

Комментарии

При следующем запуске после завершения работы приложения приложение должно перечислить все существующие экземпляры DownloadOperation с помощью GetCurrentDownloadsAsync. Когда приложение UWP, использующее фоновую передачу, завершается, незавершенные загрузки сохраняются в фоновом режиме. Если приложение перезапущено после завершения работы, а эти неполные операции не перечислены и повторно представлены в текущем сеансе, они устареют и по-прежнему занимают ресурсы устройства.

Фоновая передача не поддерживает одновременные загрузки одного и того же URI. Таким образом, приложение можно скачать http://example.com/myfile.wmv один раз или снова после завершения предыдущей загрузки. Приложение не должно одновременно запускать две загрузки одного и того же URI , так как это может привести к усеченным файлам.

Примечание

Приостановленные или неполные операции загрузки можно возобновить, только если сервер принимает запросы диапазона.

Рекомендации по истечении времени ожидания

  1. При установке нового подключения для скачивания по протоколу TCP/SSL попытка подключения прерывается, если оно не установлено в течение пяти минут.
  2. После установки подключения сообщение HTTP-запроса, которое не получило ответ в течение двух минут, прерывается. При условии, что есть подключение к Интернету, фоновая передача будет повторять скачивание до трех раз. В случае, если подключение к Интернету не обнаружено, дополнительные попытки не будут предприниматься до тех пор, пока это не произойдет.

Руководство по отладке

Остановка сеанса отладки в Microsoft Visual Studio сравнима с закрытием приложения; скачивание приостанавливается, а отправка post завершается. Даже во время отладки приложение должно перечислить, а затем приостановить, возобновить, перезапустить или отменить все сохраненные загрузки.

Однако если обновления проекта Microsoft Visual Studio, например изменения манифеста приложения, требуют удаления и повторного развертывания приложения для отладки, GetCurrentDownloadsAsync не сможет перечислить сохраненные операции, созданные с помощью предыдущего развертывания приложения.

Журнал версий

Версия Windows Версия пакета SDK Добавленная стоимость
1709 16299 CurrentWebErrorStatus
1709 16299 GetDownloadedRanges
1709 16299 GetResultRandomAccessStreamReference
1709 16299 IsRandomAccessRequired
1709 16299 RangesDownloaded
1709 16299 RecoverableWebErrorStatuses
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

Свойства

CostPolicy

Возвращает и задает политику затрат для скачивания.

CurrentWebErrorStatus

WebErrorStatus передачи, который можно отслеживать в течение жизненного цикла DownloadOperation.

Group

Примечание

Группа может быть изменена или недоступна для выпусков после Windows 8.1. Вместо этого используйте TransferGroup.

Возвращает строковое значение, указывающее группу, к которой принадлежит передача.

Guid

Это уникальный идентификатор для конкретной операции скачивания. Идентификатор GUID, связанный с операцией скачивания, не будет изменяться в течение всего периода загрузки.

IsRandomAccessRequired

Логическое свойство для включения произвольного доступа. Чтобы использовать функцию случайного доступа, свойство должно иметь значение TRUE перед вызовом StartAsync() в объекте DownloadOperation . После вызова StartAsync() вызовите Метод GetResultRandomAccessStreamReference , чтобы получить ссылку на поток случайного доступа и считывать из него.

Method

Возвращает метод, используемый для скачивания.

Priority

Возвращает или задает приоритет передачи этой операции скачивания в backgroundTransferGroup. Возможные значения определяются backgroundTransferPriority.

Progress

Возвращает текущий ход выполнения операции.

RecoverableWebErrorStatuses

Набор значений WebErrorStatus , которые приложения ожидают, что загрузка будет достигнута, и что приложения знают, как обрабатывать.

RequestedUri

Возвращает универсальный код ресурса (URI), из которого нужно скачать файл.

ResultFile

Возвращает объект IStorageFile , предоставленный вызывающим объектом при создании объекта DownloadOperation с помощью CreateDownload.

TransferGroup

Возвращает группу, к которой принадлежит эта операция скачивания.

Методы

AttachAsync()

Возвращает асинхронную операцию, которую можно использовать для отслеживания хода выполнения и завершения присоединенной загрузки. Вызов этого метода позволяет приложению присоединять операции скачивания, запущенные в предыдущем экземпляре приложения.

GetDownloadedRanges()

Возвращает полный список диапазонов файлов, которые были загружены до сих пор.

GetResponseInformation()

Возвращает сведения об ответе.

GetResultRandomAccessStreamReference()

Получает ссылку на поток произвольного доступа и считывает из него. Перед вызовом Метода GetResultRandomAccessStreamReference необходимо задать для свойства IsRandomAccessRequired значение TRUE.

GetResultStreamAt(UInt64)

Возвращает частично загруженный ответ в указанной позиции.

MakeCurrentInTransferGroup()

Определяет приоритеты операции передачи загрузки (и всех последующих передач в той же группе передач). Вызов этого метода при передаче, которая не принадлежит группе передачи, не оказывает влияния.

Pause()

Приостанавливает операцию скачивания.

RemoveRequestHeader(String)

Используется для удаления заголовка HTTP-запроса.

Resume()

Возобновляет приостановленную операцию скачивания.

SetRequestHeader(String, String)

Используется для задания заголовка HTTP-запроса.

StartAsync()

Запускает асинхронную операцию скачивания.

События

RangesDownloaded

Предоставляет доступ к ходу добавочного скачивания.

Применяется к

См. также раздел