다음을 통해 공유


UploadOperation 클래스

정의

비동기 업로드 작업을 수행합니다. 백그라운드 전송 기능에 대한 개요는 백그라운드에서 데이터 전송을 참조하세요. 코드 예제에 대한 백그라운드 전송 샘플을 다운로드합니다.

public ref class UploadOperation sealed : IBackgroundTransferOperationPriority
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UploadOperation final : IBackgroundTransferOperationPriority
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UploadOperation : IBackgroundTransferOperationPriority
Public NotInheritable Class UploadOperation
Implements IBackgroundTransferOperationPriority
상속
Object Platform::Object IInspectable UploadOperation
특성
구현

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.Pickers;
using Windows.Storage;

private async void StartUpload_Click(object sender, RoutedEventArgs e)
{
    try
    {
        Uri uri = new Uri(serverAddressField.Text.Trim());
        FileOpenPicker picker = new FileOpenPicker();
        picker.FileTypeFilter.Add("*");
        StorageFile file = await picker.PickSingleFileAsync();

        BackgroundUploader uploader = new BackgroundUploader();
        uploader.SetRequestHeader("Filename", file.Name);

        UploadOperation upload = uploader.CreateUpload(uri, file);

        // Attach progress and completion handlers.
        HandleUploadAsync(upload, true);
    }
    catch (Exception ex)
    {
        LogException("Upload Error", ex);
    }
}

설명

앱이 종료된 후 앱은 GetCurrentUploadsAsync를 사용하여 다음 시작 시 모든 기존 UploadOperation 인스턴스를 열거해야 합니다. 백그라운드 전송을 사용하는 UWP 앱이 종료되면 불완전한 업로드가 백그라운드에서 유지됩니다. 종료 후 앱이 다시 시작되고 이러한 불완전한 작업이 열거되지 않고 현재 세션에 다시 도입되지 않으면 부실 상태가 되어 디바이스 리소스를 계속 차지하게 됩니다. 시간 제한 고려 사항

  • 1.) TCP/SSL을 통해 업로드에 대한 새 연결을 설정할 때 5분 이내에 설정되지 않으면 연결 시도가 중단됩니다.
  • 2.) 연결이 설정되면 2분 이내에 응답을 받지 못한 HTTP 요청 메시지가 중단됩니다. 인터넷 연결이 있다고 가정하면 백그라운드 전송은 최대 세 번까지 업로드를 다시 시도합니다. 인터넷 연결이 검색되지 않는 경우 추가 시도가 있을 때까지 시도되지 않습니다.

디버깅 지침

Microsoft Visual Studio에서 디버깅 세션을 중지하는 것은 앱을 닫는 것과 비슷합니다. PUT 업로드가 일시 중지되고 POST 업로드가 중단됩니다. 디버깅하는 동안에도 앱은 지속형 업로드를 열거한 다음 일시 중지, 다시 시작 또는 취소해야 합니다.

그러나 앱 매니페스트 변경과 같이 Microsoft Visual Studio 프로젝트 업데이트가 앱이 제거되고 디버깅을 위해 다시 배포되어야 하는 경우 GetCurrentUploadsAsync 는 이전 앱 배포를 사용하여 만든 지속형 작업을 열거할 수 없습니다.

버전 기록

Windows 버전 SDK 버전 추가된 값
1803 17134 MakeCurrentInTransferGroup
2004 19041 RemoveRequestHeader
2004 19041 SetRequestHeader

속성

CostPolicy

업로드에 대한 비용 정책을 가져오고 설정합니다.

Group

참고

Windows 8.1 후 릴리스에서 그룹을 변경하거나 사용할 수 없습니다. 대신 TransferGroup을 사용합니다.

업로드가 속한 그룹을 나타내는 문자열 값을 가져옵니다.

Guid

특정 업로드 작업의 고유 식별자입니다. 업로드 작업에 연결된 GUID 는 업로드 기간 동안 변경되지 않습니다.

Method

업로드에 사용할 메서드를 가져옵니다.

Priority

BackgroundTransferGroup 내에서 이 업로드 작업의 전송 우선 순위를 가져오거나 설정합니다. 가능한 값은 BackgroundTransferPriority에 의해 정의됩니다.

Progress

업로드 작업의 현재 진행률을 가져옵니다.

RequestedUri

업로드할 URI를 가져옵니다.

SourceFile

업로드할 IStorageFile 을 지정합니다.

TransferGroup

이 업로드 작업이 속한 그룹을 가져옵니다.

메서드

AttachAsync()

연결된 업로드의 진행률 및 완료를 모니터링하는 데 사용할 수 있는 비동기 작업을 반환합니다. 이 메서드를 호출하면 앱이 이전 앱 instance 시작된 업로드 작업을 연결할 수 있습니다.

GetResponseInformation()

응답 정보를 가져옵니다.

GetResultStreamAt(UInt64)

지정된 위치에서 부분적으로 업로드된 응답을 가져옵니다.

MakeCurrentInTransferGroup()

업로드 전송 작업(및 동일한 전송 그룹에서 수행되는 모든 전송)의 우선 순위를 지정합니다. 전송 그룹에 속하지 않는 전송 시 이 메서드를 호출해도 아무런 효과가 없습니다.

RemoveRequestHeader(String)

HTTP 요청 헤더를 제거하는 데 사용됩니다.

SetRequestHeader(String, String)

HTTP 요청 헤더를 설정하는 데 사용됩니다.

StartAsync()

비동기 업로드 작업을 시작합니다.

적용 대상

추가 정보