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 설정된 경우에만 오류 상태를 수정합니다. 오류 상태가 이미 오류, 취소, 완료 또는 닫힌 경우에는 이 작업이 적용되지 않습니다.