AsyncBase 클래스

Windows 런타임 비동기 상태 컴퓨터를 구현합니다.

구문

template <
    typename TComplete,
    typename TProgress = Details::Nil,
    AsyncResultType resultType = SingleResult
>
class AsyncBase : public AsyncBase<TComplete, Details::Nil, resultType>;

template <typename TComplete, AsyncResultType resultType>
class AsyncBase<TComplete, Details::Nil, resultType> :
    public Microsoft::WRL::Implements<IAsyncInfo>;

매개 변수

TComplete
비동기 작업이 완료되면 호출되는 이벤트 처리기입니다.

TProgress
실행 중인 비동기 작업이 작업의 현재 진행률을 보고할 때 호출되는 이벤트 처리기입니다.

resultType
AsyncResultType 열거형 값 중 하나입니다. 기본적으로 . SingleResult

멤버

공용 생성자

속성 설명
AsyncBase::AsyncBase AsyncBase 클래스의 인스턴스를 초기화합니다.

공용 메서드

이름 설명
AsyncBase::Cancel 비동기 작업을 취소합니다.
AsyncBase::Close 비동기 작업을 닫습니다.
AsyncBase::FireCompletion 완료 이벤트 처리기를 호출하거나 내부 진행률 대리자를 다시 설정합니다.
AsyncBase::FireProgress 현재 진행률 이벤트 처리기를 호출합니다.
AsyncBase::get_ErrorCode 현재 비동기 작업에 대한 오류 코드를 검색합니다.
AsyncBase::get_Id 비동기 작업의 핸들을 검색합니다.
AsyncBase::get_Status 비동기 작업의 상태 나타내는 값을 검색합니다.
AsyncBase::GetOnComplete 현재 완료 이벤트 처리기의 주소를 지정된 변수에 복사합니다.
AsyncBase::GetOnProgress 현재 진행률 이벤트 처리기의 주소를 지정된 변수에 복사합니다.
AsyncBase::p ut_Id 비동기 작업의 핸들을 설정합니다.
AsyncBase::P utOnComplete 완료 이벤트 처리기의 주소를 지정된 값으로 설정합니다.
AsyncBase::P utOnProgress 진행률 이벤트 처리기의 주소를 지정된 값으로 설정합니다.

보호된 메서드

속성 설명
AsyncBase::CheckValidStateForDelegateCall 현재 비동기 상태에서 대리자 속성을 수정할 수 있는지 여부를 테스트합니다.
AsyncBase::CheckValidStateForResultsCall 비동기 작업의 결과를 현재 비동기 상태에서 수집할 수 있는지 여부를 테스트합니다.
AsyncBase::ContinueAsyncOperation 비동기 작업이 처리를 계속할지 아니면 중지해야 하는지를 결정합니다.
AsyncBase::CurrentStatus 현재 비동기 작업의 상태 검색합니다.
AsyncBase::ErrorCode 현재 비동기 작업에 대한 오류 코드를 검색합니다.
AsyncBase::OnCancel 파생 클래스에서 재정의되는 경우 비동기 작업을 취소합니다.
AsyncBase::OnClose 파생 클래스에서 재정의되는 경우 비동기 작업을 닫습니다.
AsyncBase::OnStart 파생 클래스에서 재정의되는 경우 비동기 작업을 시작합니다.
AsyncBase::Start 비동기 작업을 시작합니다.
AsyncBase::TryTransitionToCompleted 현재 비동기 작업이 완료되었는지 여부를 나타냅니다.
AsyncBase::TryTransitionToError 지정된 오류 코드가 내부 오류 상태를 수정할 수 있는지 여부를 나타냅니다.

상속 계층 구조

AsyncBase

AsyncBase

요구 사항

헤더: async.h

네임스페이스: Microsoft::WRL

AsyncBase::AsyncBase

AsyncBase 클래스의 인스턴스를 초기화합니다.

AsyncBase();

AsyncBase::Cancel

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

STDMETHOD(
   Cancel
)(void);

Return Value

기본적으로 항상 S_OK 반환합니다.

설명

Cancel() 는 기본 구현이며 IAsyncInfo::Cancel실제 작업을 수행하지 않습니다. 실제로 비동기 작업을 취소하려면 순수 가상 메서드를 재정의 OnCancel() 합니다.

AsyncBase::CheckValidStateForDelegateCall

현재 비동기 상태에서 대리자 속성을 수정할 수 있는지 여부를 테스트합니다.

inline HRESULT CheckValidStateForDelegateCall();

Return Value

대리자 속성을 수정할 수 있는지 S_OK. 그렇지 않으면 E_ILLEGAL_METHOD_CALL.

AsyncBase::CheckValidStateForResultsCall

비동기 작업의 결과를 현재 비동기 상태에서 수집할 수 있는지 여부를 테스트합니다.

inline HRESULT CheckValidStateForResultsCall();

Return Value

결과를 수집할 수 있는지 S_OK. 그렇지 않으면 E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL.

AsyncBase::Close

비동기 작업을 닫습니다.

STDMETHOD(
   Close
)(void) override;

Return Value

작업이 닫히거나 이미 닫혀 있는지 S_OK. 그렇지 않으면 E_ILLEGAL_STATE_CHANGE.

설명

Close() 는 기본 구현이며 IAsyncInfo::Close실제 작업을 수행하지 않습니다. 실제로 비동기 작업을 닫려면 순수 가상 메서드를 재정의 OnClose() 합니다.

AsyncBase::ContinueAsyncOperation

비동기 작업이 처리를 계속할지 아니면 중지해야 하는지를 결정합니다.

inline bool ContinueAsyncOperation();

Return Value

true비동기 작업의 현재 상태가 시작되면 작업을 계속해야 합니다. 그렇지 않으면 false작업이 중단되어야 하므로

AsyncBase::CurrentStatus

현재 비동기 작업의 상태 검색합니다.

inline void CurrentStatus(
   Details::AsyncStatusInternal *status
);

매개 변수

status
이 작업이 현재 상태 저장하는 위치입니다.

설명

이 작업은 스레드로부터 안전합니다.

AsyncBase::ErrorCode

현재 비동기 작업에 대한 오류 코드를 검색합니다.

inline void ErrorCode(
   HRESULT *error
);

매개 변수

error
이 작업에서 현재 오류 코드를 저장하는 위치입니다.

설명

이 작업은 스레드로부터 안전합니다.

AsyncBase::FireCompletion

완료 이벤트 처리기를 호출하거나 내부 진행률 대리자를 다시 설정합니다.

void FireCompletion(
   void
) override;

virtual void FireCompletion();

설명

첫 번째 버전은 FireCompletion() 내부 진행률 대리자 변수를 다시 설정합니다. 두 번째 버전은 비동기 작업이 완료되면 완료 이벤트 처리기를 호출합니다.

AsyncBase::FireProgress

현재 진행률 이벤트 처리기를 호출합니다.

void FireProgress(
   const typename ProgressTraits::Arg2Type arg
);

매개 변수

arg
호출할 이벤트 처리기 메서드입니다.

설명

ProgressTraits는 ArgTraitsHelper 구조체에서 파생됩니다.

AsyncBase::get_ErrorCode

현재 비동기 작업에 대한 오류 코드를 검색합니다.

STDMETHOD(
   get_ErrorCode
)(HRESULT* errorCode) override;

매개 변수

errorCode
현재 오류 코드가 저장되는 위치입니다.

Return Value

S_OK 성공하면

AsyncBase::get_Id

비동기 작업의 핸들을 검색합니다.

STDMETHOD(
   get_Id
)(unsigned int *id) override;

매개 변수

id
핸들을 저장할 위치입니다.

Return Value

S_OK 성공하면

설명

이 메서드는 IAsyncInfo::get_Id를 구현합니다.

AsyncBase::get_Status

비동기 작업의 상태 나타내는 값을 검색합니다.

STDMETHOD(
   get_Status
)(AsyncStatus *status) override;

매개 변수

status
상태 저장할 위치입니다. 자세한 내용은 열거형을 참조 Windows::Foundation::AsyncStatus 하세요.

Return Value

S_OK 성공하면

설명

이 메서드는 IAsyncInfo::get_Status를 구현합니다.

AsyncBase::GetOnComplete

현재 완료 이벤트 처리기의 주소를 지정된 변수에 복사합니다.

STDMETHOD(
   GetOnComplete
)(TComplete** completeHandler);

매개 변수

completeHandler
현재 완료 이벤트 처리기의 주소가 저장되는 위치입니다.

Return Value

S_OK 성공하면

AsyncBase::GetOnProgress

현재 진행률 이벤트 처리기의 주소를 지정된 변수에 복사합니다.

STDMETHOD(
   GetOnProgress
)(TProgress** progressHandler);

매개 변수

progressHandler
현재 진행률 이벤트 처리기의 주소가 저장되는 위치입니다.

Return Value

S_OK 성공하면

AsyncBase::OnCancel

파생 클래스에서 재정의되는 경우 비동기 작업을 취소합니다.

virtual void OnCancel(
   void
) = 0;

AsyncBase::OnClose

파생 클래스에서 재정의되는 경우 비동기 작업을 닫습니다.

virtual void OnClose(
   void
) = 0;

AsyncBase::OnStart

파생 클래스에서 재정의되는 경우 비동기 작업을 시작합니다.

virtual HRESULT OnStart(
   void
) = 0;

AsyncBase::p ut_Id

비동기 작업의 핸들을 설정합니다.

STDMETHOD(
   put_Id
)(const unsigned int id);

매개 변수

id
0이 아닌 핸들입니다.

Return Value

S_OK 성공하면

AsyncBase::P utOnComplete

완료 이벤트 처리기의 주소를 지정된 값으로 설정합니다.

STDMETHOD(
   PutOnComplete
)(TComplete* completeHandler);

매개 변수

completeHandler
완료 이벤트 처리기가 설정된 주소입니다.

Return Value

S_OK 성공하면

AsyncBase::P utOnProgress

진행률 이벤트 처리기의 주소를 지정된 값으로 설정합니다.

STDMETHOD(
   PutOnProgress
)(TProgress* progressHandler);

매개 변수

progressHandler
진행률 이벤트 처리기가 설정된 주소입니다.

Return Value

S_OK 성공하면

AsyncBase::Start

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

STDMETHOD(
   Start
)(void);

Return Value

S_OK 작업이 시작되거나 이미 시작되었는지 여부입니다. 그렇지 않으면 E_ILLEGAL_STATE_CHANGE.

설명

Start() 는 호출자로 돌아가기 전에 비동기 작업 "핫 시작"을 수행하므로 외부에서 볼 수 없는 보호된 메서드입니다.

AsyncBase::TryTransitionToCompleted

현재 비동기 작업이 완료되었는지 여부를 나타냅니다.

bool TryTransitionToCompleted(
   void
);

Return Value

true비동기 작업이 완료되었으면 이고, 그렇지 않으면 . false

AsyncBase::TryTransitionToError

지정된 오류 코드가 내부 오류 상태를 수정할 수 있는지 여부를 나타냅니다.

bool TryTransitionToError(
   const HRESULT error
);

매개 변수

error
오류 HRESULT입니다.

Return Value

true내부 오류 상태가 변경되었으면 false

설명

이 작업은 오류 상태가 이미 S_OK 설정된 경우에만 오류 상태를 수정합니다. 오류 상태가 이미 오류, 취소, 완료 또는 닫힌 경우에는 이 작업이 적용되지 않습니다.