UploadOperation 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
비동기 업로드 작업을 수행합니다. 백그라운드 전송 기능에 대한 개요는 백그라운드에서 데이터 전송을 참조하세요. 코드 예제에 대한 백그라운드 전송 샘플을 다운로드합니다.
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
- 상속
- 특성
- 구현
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() |
비동기 업로드 작업을 시작합니다. |