BackgroundDownloader Class

CreateDownload를 사용하여 다운로드 작업을 실제로 생성하기 전에 다운로드를 구성하는 데 사용됩니다. 백그라운드 전송 기능에 대한 개요는 백그라운드에서 데이터 전송을 참조하십시오. JavaScript, C# 및 C++의 예는 백그라운드 전송 샘플을 다운로드하십시오.

참고  백그라운드 전송은 기본적으로 동영상, 음악, 큰 이미지와 같은 리소스를 장시간 전송하는 작업을 위해 설계되었습니다. 작은 리소스(예: 1KB ~2KB)만 전송하면 되는 단기 작업의 경우 Windows.Web.Http 네임스페이스를 사용합니다.

구문


var backgroundDownloader = new Windows.Networking.BackgroundTransfer.BackgroundDownloader();

특성

[MarshalingBehavior(Agile)]
[Threading(Both)]
[Version(0x06020000)]

멤버

BackgroundDownloader클래스에는 다음과 같은 형식의 멤버가 있습니다.

생성자

BackgroundDownloader클래스에는 다음과 같은 생성자가 있습니다.

생성자Description
BackgroundDownloader Instantiates a new BackgroundDownloader object.

 

메서드

The BackgroundDownloader 클래스 - 이러한 메서드가 있습니다. C#, Visual Basic 및 C++에서는 다음 위치의 메서드도 상속합니다. Object 클래스.

메서드Description
CreateDownload(Uri, IStorageFile) Initializes a DownloadOperation object that contains the specified Uri and the file that the response is written to.
CreateDownload(Uri, IStorageFile, IStorageFile) Initializes a DownloadOperation object with the resource Uri, the file that the response is written to, and the request entity body.
CreateDownloadAsync Creates an asynchronous download operation that includes a URI, the file that the response will be written to, and the IInputStream object from which the file contents are read.
GetCurrentDownloadsAsync() Returns a collection of pending downloads that are not associated with a group.
GetCurrentDownloadsAsync(String) Returns a collection of pending downloads for a specific Group.
GetCurrentDownloadsForTransferGroupAsync Gets all downloads associated with the provided BackgroundTransferGroup
RequestUnconstrainedDownloadsAsync Used to request an unconstrained download operation. When this method is called the user is provided with a UI prompt that they can use to indicate their consent for an unconstrained operation.
SetRequestHeader Used to set an HTTP request header.

 

속성

BackgroundDownloader클래스 - 이러한 속성이 있습니다.

속성사용 권한Description

CostPolicy

읽기/쓰기Gets or sets the cost policy for the background download operation.

FailureTileNotification

읽기/쓰기Gets or sets the TileNotification used to define the visuals, identification tag, and expiration time of a tile notification used to update the app tile when indicating failure of a download to the user.

FailureToastNotification

읽기/쓰기Gets or sets the ToastNotification that defines the content, associated metadata, and events used in a toast notification to indicate failure of a download to the user.

Group

읽기/쓰기Gets or sets a string value (e.g. a GUID) indicating the group the transfer will belong to. A download operation with a group ID will only appear in operation enumerations using GetCurrentDownloadsAsync(String)

Method

읽기/쓰기Gets or sets the HTTP method used for the background download

ProxyCredential

읽기/쓰기Gets or sets the proxy credentials for the background transfer.

ServerCredential

읽기/쓰기Gets or sets the credentials to use to authenticate with the origin server.

SuccessTileNotification

읽기/쓰기Gets or sets the TileNotification used to define the visuals, identification tag, and expiration time of a tile notification used to update the app tile when indicating success of a download to the user.

SuccessToastNotification

읽기/쓰기Gets or sets the ToastNotification that defines the content, associated metadata, and events used in a toast notification to indicate success of a download to the user.

TransferGroup

읽기/쓰기Gets or sets the group that a download operation will belong to.

 

설명

앱 종료 후 앱은 다음 시작 시에 GetCurrentDownloadsAsync를 사용하여 모든 기존 DownloadOperation 인스턴스를 열거해야 합니다. 백그라운드 전송을 사용하여 Windows 스토어 앱을 종료하면 불완전한 다운로드가 백그라운드에서 유지됩니다. 종료 후 앱이 다시 시작되고, 이전 세션의 작업이 열거되지 않으며 현재 세션에 다시 연결되지 않을 경우 완료되지 않은 상태가 유지되고 리소스를 계속 차지합니다.

참고  앱을 제거하면 앱과 연결된 현재 또는 영구 백그라운드 전송 작업이 모두 정리됩니다.

백그라운드 전송은 같은 Uri의 동시 다운로드를 지원하지 않습니다. 그러므로 앱에서는 http://example.com/myfile.wmv를 한 번 다운로드하거나, 이전 다운로드가 완료된 후 다시 다운로드할 수 있습니다. 파일이 잘릴 수 있으므로 앱에서 동일한 Uri의 두 다운로드를 동시에 시작할 수 없습니다.

백그라운드 전송 작업에 대한 라이브러리를 구현 중이며 동일한 라이브러리가 다른 앱 또는 구성 요소에서 사용되는 경우 다운로드를 만들 때 고유한 group 이름 문자열(예: GUID)을 지정합니다. 그룹 이름 문자열이 있는 다운로드는 일치하는 문자열을 GetCurrentDownloadsAsync(String)에 제공하는 방법으로만 열거할 수 있으며 일치하는 문자열이 없는 GetCurrentDownloadsAsync 호출에는 나타나지 않습니다. 다운로드를 위해 동일한 라이브러리로 구현된 다른 앱이 다운로드에 표시되지 않는지 확인합니다.

FTP를 통한 다운로드 작업이 지원됩니다. 하지만 FTP 작업의 경우 지정된 URI 내에서 인증 자격 증명을 제공해야 합니다. 예를 들면 ftp://user:password@server/file.txt와 같습니다.

다운로드 작업에 인증을 위한 사용자 이름과 암호가 필요한 경우 보안 문제가 있을 수 있습니다. 사용할 인증 모델이 WinINet에서 지원되는 경우 ServerCredential 또는 ProxyCredential 속성을 사용합니다. 이러한 값은 WinVault에 안전하게 저장됩니다. 지원되는 인증 방법에 대한 자세한 내용은 인증 처리를 참조하십시오.

인증 모델이 WinINet에서 지원되지 않는 경우 HttpClient를 사용하여 사용자 지정 인증을 구현하고 다운로드 관련 보안 토큰(쿠키)을 가져옵니다. 백그라운드 전송에 사용되는 보안 토큰 값을 가지도록 적절한 헤더를 설정합니다. 서비스에서는 보안 토큰의 유효성을 다운로드되는 파일로 제한해야 합니다.

참고  보안 토큰은 응용 프로그램의 폴더 내에서 일반 텍스트로 저장됩니다.

사용자 이름 및 암호가 각 다운로드 파일의 사용자 지정 헤더에 일반 텍스트로 설정되어야 하는 업로드 서비스는 안전하지 않습니다. 앱의 폴더 내에서 작업할 동안 백그라운드 전송은 일반 텍스트로 헤더에 캐싱됩니다.

Handling Exceptions

다운로드 작업 중에 여러 오류로 인해 예외가 발생할 수 있습니다. 이 클래스에서 메서드를 호출할 때 예외를 처리하는 코드를 작성해야 합니다. 매개 변수 유효성 검사 오류, 이름 확인 실패 및 네트워크 오류에서 예외가 발생할 수 있습니다. 언제든지 네트워크 오류(예: 연결 끊어짐, 연결 실패, 기타 HTTP 오류)의 예외가 발생할 수 있습니다. 이러한 오류가 발생하면 예외가 throw됩니다. 앱에서 예외를 처리하지 않을 경우 런타임에 의해 전체 앱이 종료될 수 있습니다.

앱은 예외의 HRESULT를 사용하여 예외를 발생시키는 오류를 확인할 수 있습니다. 그런 다음 앱에서 오류 코드에 따라 예외를 처리하는 방법을 결정할 수 있습니다. BackgroundTransferError.GetStatus 메서드는 반환된 대부분의 HRESULT 값을 WebErrorStatus 열거형 값으로 변환할 수 있습니다. 대부분의 WebErrorStatus 열거형 값은 기본 HTTP 또는 FTP 클라이언트 작업으로 반환되는 오류에 해당합니다. 앱은 특정 WebErrorStatus 열거형 값을 기준으로 필터링하여 예외 원인에 따라 앱 동작을 수정할 수 있습니다.

네트워크 예외에 대한 자세한 내용은 네트워크 앱의 예외 처리를 참조하십시오.

Debugging Guidance

Microsoft Visual Studio에서 디버깅 세션을 중지하는 것은 앱 닫기와 같습니다. 디버깅하는 중에도 앱은 이전 세션에서 계속 유지된 다운로드를 열거한 다음 다시 시작 또는 취소해야 합니다. 예를 들어 현재 디버그 세션에 대한 이전 작업에 관심이 없을 경우 앱 시작 시 앱에서 계속 유지되어 열거된 다운로드 작업을 취소할 수 있습니다.

앱 매니페스트 변경과 같은 Visual Studio 프로젝트 업데이트가 있고 앱을 제거한 다음 다시 배포해야 하는 경우 GetCurrentUploadsAsync는 이전 앱 배포를 사용하여 만든 작업을 열거할 수 없습니다.

자세한 내용은 Windows 스토어 앱 디버깅 및 테스트를 참조하십시오.

예제

다음 예제에서는 Windows 샘플 갤러리에 제공된 백그라운드 전송 샘플에 기반을 두 기본 다운로드 작업을 구성 및 시작하는 방법을 보여 줍니다.


        var download = null;
        var promise = null;

        function DownloadFile (uriString, fileName) {
            try {
                // Asynchronously create the file in the pictures folder.
                Windows.Storage.KnownFolders.picturesLibrary.createFileAsync(fileName, Windows.Storage.CreationCollisionOption.generateUniqueName).done(function (newFile) {
                    var uri = Windows.Foundation.Uri(uriString);
                    var downloader = new Windows.Networking.BackgroundTransfer.BackgroundDownloader();

                    // Create a new download operation.
                    download = downloader.createDownload(uri, newFile);

                    // Start the download and persist the promise to be able to cancel the download.
                    promise = download.startAsync().then(complete, error, progress);
                }, error);
            } catch (err) {
                displayException(err);
            }
        };

요구 사항

지원되는 최소 클라이언트

Windows 8 [Windows 스토어 앱만]

지원되는 최소 서버

Windows Server 2012 [Windows 스토어 앱만]

Namespace

Windows.Networking.BackgroundTransfer
Windows::Networking::BackgroundTransfer [C++]

Metadata

Windows.winmd

Capabilities

internetClient
internetClientServer
privateNetworkClientServer

참고 항목

빠른 시작: 파일 다운로드
백그라운드 전송 샘플
네트워크 앱에서 예외 처리

 

 

표시:
© 2014 Microsoft