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
- Наследование
- Атрибуты
- Реализации
Требования к 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 , так как это может привести к усеченным файлам.
Примечание
Приостановленные или неполные операции загрузки можно возобновить, только если сервер принимает запросы диапазона.
Рекомендации по истечении времени ожидания
- При установке нового подключения для скачивания по протоколу TCP/SSL попытка подключения прерывается, если оно не установлено в течение пяти минут.
- После установки подключения сообщение 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 |
Предоставляет доступ к ходу добавочного скачивания. |