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 |
Предоставляет доступ к ходу добавочного скачивания. |