다음을 통해 공유


IAsyncOperationWithProgress<TResult,TProgress> 인터페이스

정의

호출자에게 진행률 업데이트를 보고할 수 있는 비동기 작업을 나타냅니다. 결과가 있고 진행률도 보고하는 많은 Windows 런타임 비동기 메서드의 반환 형식입니다.

public interface class IAsyncOperationWithProgress : IAsyncInfo
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(3050321623, 58007, 18831, 186, 96, 2, 137, 231, 110, 35, 221)]
template <typename TResult, typename TProgress>
struct IAsyncOperationWithProgress : IAsyncInfo
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(3050321623, 58007, 18831, 186, 96, 2, 137, 231, 110, 35, 221)]
public interface IAsyncOperationWithProgress<TResult,TProgress> : IAsyncInfo
Public Interface IAsyncOperationWithProgress(Of TResult, TProgress)
Implements IAsyncInfo

형식 매개 변수

TResult
TProgress
파생
특성
구현

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0에서 도입되었습니다.)
API contract
Windows.Foundation.FoundationContract (v1.0에서 도입되었습니다.)

설명

IAsyncOperationWithProgress<TResult,TProgress>는 완료 시 결과가 있는 많은 Windows 런타임 비동기 메서드의 반환 형식이며 진행률에 대한 콜백을 할당하여 호출자가 구독할 수 있는 진행률을 보고하는 알림도 지원합니다. 이는 약 100개의 서로 다른 Windows 런타임 API를 구성합니다. 진행률을 보고하지 않지만 결과가 있는 API는 다른 인터페이스 인 IAsyncOperation<TResult>를 사용합니다.

앱 코드에서 IAsyncOperationWithProgress<TResult,TProgress> ( TResult 특정 제약 조건 포함)를 반환하는 메서드를 사용하는 경우 일반적으로 IAsyncOperationWithProgress 반환 값에 직접 액세스하지 않습니다. 이는 거의 항상 언어별 대기 가능 구문을 사용하기 때문입니다. 이 경우 메서드의 명백한 반환 값은 TResult 매개 변수로 제공되는 형식입니다. 자세한 내용은 비동기 프로그래밍 또는 비동기 프로그래밍을 Windows 런타임 언어별 가이드 중 하나를 참조하세요(C# 또는 Visual Basic, C++, JavaScript에서 비동기 API 호출).

언어별 대기 가능 구문을 사용하지 않더라도 IAsyncOperationWithProgress<TResult,TProgress> 를 직접 사용하는 것은 일반적이지 않습니다. 각 언어에는 일반적으로 Windows 런타임 인터페이스보다 사용하기 쉬운 확장 지점이 있습니다. JavaScript에는 WinJS.Promisethen/done 구문이 있습니다. .NET에는 AsTask 확장 메서드가 있으며, IAsyncOperationWithProgress<TResult,TProgress> 가 Task<TResult>로 변환되면 결과를 얻고, 취소하고, 완료 시 알림을 받는 등의 작업을 더 쉽게 수행할 수 있습니다. C++/CX의 경우 동시성 런타임 을 사용하여 호출을 래핑하고 create_task 사용할 수 있습니다. 즉, IAsyncOperationWithProgress<TResult,TProgress> 는 각 언어가 자체 방식으로 대기 가능한 구문 또는 비동기 프로그래밍 모델을 지원하기 위해 프레임워크로 사용하는 런타임 수준 인프라로 간주될 수 있습니다.

특히 .NET 코드에서 진행률을 처리하려는 경우 확장 사용에서 단일 IProgress 참조 매개 변수가 있는 AsTask 서명을 사용합니다. (이 사용에서 진행률 단위는 이미 제한되었으며 사용 중인 IAsyncOperationWithProgress 메서드와 일치합니다.) IProgress를 구현하는 개체를 제공하고 Windows 런타임 메서드가 진행률 알림을 보고할 때마다 Report 메서드 구현이 호출됩니다.

동작의 진행률을 모니터링하려면(위에서 설명한 언어별 기술을 사용하지 않는 경우) Progress 속성을 설정하여 AsyncOperationProgressHandler<TResult,TProgress> 대리자를 구현하는 메서드의 이름을 제공합니다.

C++/WinRT 확장 함수

참고

확장 함수는 특정 Windows 런타임 API에 대한 C++/WinRT 프로젝션 형식에 있습니다. 예를 들어 winrt::Windows::Foundation::IAsyncAction은 IAsyncAction 에 대한 C++/WinRT 프로젝션 형식 입니다. 확장 함수는 실제 Windows 런타임 형식의 ABI(애플리케이션 이진 인터페이스) 화면의 일부가 아니므로 Windows 런타임 API의 멤버로 나열되지 않습니다. 그러나 C++/WinRT 프로젝트 내에서 호출할 수 있습니다. Windows 런타임 API를 확장하는 C++/WinRT 함수를 참조하세요.

TResult get() const;

작업이 완료되기를 동기적으로 대기하고 완료된 값을 반환합니다. 작업이 취소되거나 오류 상태가 되면 해당 예외를 throw합니다. 단일 스레드 아파트에서 호출해서는 안됩니다. 자세한 정보 및 get을 호출하는 방법을 보여 주는 코드 예제는 코루틴 작성을 참조하세요.

AsyncStatus wait_for(TimeSpan const& timeout) const;

작업이 완료될 때까지 또는 지정된 시간 제한에 대해 동기적으로 대기합니다. 시간 제한이 경과한 경우 IAsyncOperationWithProgress 또는 AsyncStatus::Started 의 상태를 반환합니다. 작업이 시간 초과되지 않은 경우 GetResults 를 호출하여 작업 결과를 가져옵니다. 자세한 내용과 wait_for 호출하는 방법을 보여 주는 코드 예제는 쉽게 만든 비동기 시간 제한을 참조하세요.

인터페이스 상속

IAsyncOperationWithProgress<TResult,TProgress> 는 IAsyncInfo를 상속합니다. IAsyncOperationWithProgress<TResult를 구현하는 형식, TProgress> 는 IAsyncInfo의 인터페이스 멤버도 구현합니다.

구현자에 대한 참고 사항

기존 메서드를 호출하는 것과 마찬가지로 IAsyncOperationWithProgress<TResult,TProgress> 를 직접 사용하지 않는 비동기 메서드를 정의하는 언어별 방법이 있습니다. .NET을 사용하여 코드를 작성하는 경우 메서드는 Task<TResult>를 반환할 수 있습니다. C++/CX의 경우 동시성 런타임을 사용할 수 있습니다. 그러나 구성 요소를 정의하는 경우 작업/태스크를 내부적으로 사용할 수 있지만 공용 메서드에 대한 Windows 런타임 인터페이스 중 하나를 반환해야 합니다. 언어별 비동기 지원 유형(및 코드에서 일반적으로 사용할 수 있는 다른 많은 언어별 형식)은 Windows 런타임 구성 요소의 공용 노출 영역에 사용할 수 없습니다.

속성

Completed

작업이 완료되면 호출되는 대리자를 가져오거나 설정합니다.

ErrorCode

비동기 작업의 오류 조건을 설명하는 문자열을 가져옵니다.

(다음에서 상속됨 IAsyncInfo)
Id

비동기 작업의 핸들을 가져옵니다.

(다음에서 상속됨 IAsyncInfo)
Progress

진행률 알림을 처리하는 메서드를 가져오거나 설정합니다.

Status

비동기 작업의 상태 나타내는 값을 가져옵니다.

(다음에서 상속됨 IAsyncInfo)

메서드

Cancel()

비동기 작업을 취소합니다.

(다음에서 상속됨 IAsyncInfo)
Close()

비동기 작업을 닫습니다.

(다음에서 상속됨 IAsyncInfo)
GetResults()

작업의 결과를 반환합니다.

적용 대상

추가 정보