Share via


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 列挙型の値の 1 つ。 既定では、 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::put_Id 非同期操作のハンドルを設定します。
AsyncBase::PutOnComplete 完了イベント ハンドラーのアドレスを指定した値に設定します。
AsyncBase::PutOnProgress 進行状況イベント ハンドラーのアドレスを指定した値に設定します。

保護メソッド

名前 説明
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);

戻り値

既定では、常に S_OK を返します。

解説

Cancel()IAsyncInfo::Cancel の既定の実装であり、実際の処理は行われません。 非同期操作を実際にキャンセルするには、純粋仮想メソッド OnCancel() をオーバーライドします。

AsyncBase::CheckValidStateForDelegateCall

現在の非同期状態でデリゲート プロパティを変更できるかどうかをテストします。

inline HRESULT CheckValidStateForDelegateCall();

戻り値

デリゲート プロパティを変更できる場合は S_OK、それ以外の場合は E_ILLEGAL_METHOD_CALL。

AsyncBase::CheckValidStateForResultsCall

現在の非同期状態で非同期操作の結果を収集できるかどうかをテストします。

inline HRESULT CheckValidStateForResultsCall();

戻り値

結果を収集できる場合は S_OK、それ以外の場合は E_ILLEGAL_METHOD_CALLE_ILLEGAL_METHOD_CALL。

AsyncBase::Close

非同期操作を閉じます。

STDMETHOD(
   Close
)(void) override;

戻り値

操作が閉じられる場合、または既に閉じている場合は S_OK、それ以外の場合は E_ILLEGAL_STATE_CHANGE。

解説

Close()IAsyncInfo::Close の既定の実装であり、実際の処理は行われません。 非同期操作を実際に閉じるには、純粋仮想メソッド OnClose() をオーバーライドします。

AsyncBase::ContinueAsyncOperation

非同期操作の処理を続行するか、停止するかを決定します。

inline bool ContinueAsyncOperation();

戻り値

非同期操作の現在の状態が "開始済み" の場合は 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();

解説

1 つ目のバージョンの FireCompletion() では、内部の進行状況デリゲート変数がリセットされます。 2 番目のバージョンでは、非同期操作が完了した場合に完了イベント ハンドラーが呼び出されます。

AsyncBase::FireProgress

現在の進行状況イベント ハンドラーを呼び出します。

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

パラメーター

arg
呼び出すイベント ハンドラー メソッド。

解説

ProgressTraitsArgTraitsHelper 構造体から派生しています。

AsyncBase::get_ErrorCode

現在の非同期操作のエラー コードを取得します。

STDMETHOD(
   get_ErrorCode
)(HRESULT* errorCode) override;

パラメーター

errorCode
現在のエラー コードが格納される場所。

戻り値

成功した場合は S_OK。それ以外の場合は E_ILLEGAL_METHOD_CALL (現在の非同期操作が閉じている場合)。

AsyncBase::get_Id

非同期操作のハンドルを取得します。

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

パラメーター

id
ハンドルが格納される場所。

戻り値

成功した場合は S_OK。それ以外の場合は E_ILLEGAL_METHOD_CALL。

解説

このメソッドは、IAsyncInfo::get_Id を実装します。

AsyncBase::get_Status

非同期操作の状態を示す値を取得します。

STDMETHOD(
   get_Status
)(AsyncStatus *status) override;

パラメーター

status
状態が格納される場所。 詳細については、Windows::Foundation::AsyncStatus 列挙型を参照してください。

戻り値

成功した場合は S_OK。それ以外の場合は E_ILLEGAL_METHOD_CALL。

解説

このメソッドは、IAsyncInfo::get_Status を実装します。

AsyncBase::GetOnComplete

現在の完了イベント ハンドラーのアドレスを、指定した変数にコピーします。

STDMETHOD(
   GetOnComplete
)(TComplete** completeHandler);

パラメーター

completeHandler
現在の完了イベント ハンドラーのアドレスが格納されている場所。

戻り値

成功した場合は S_OK。それ以外の場合は E_ILLEGAL_METHOD_CALL。

AsyncBase::GetOnProgress

現在の進行状況イベント ハンドラーのアドレスを、指定した変数にコピーします。

STDMETHOD(
   GetOnProgress
)(TProgress** progressHandler);

パラメーター

progressHandler
現在の進行状況イベント ハンドラーのアドレスが格納されている場所。

戻り値

成功した場合は S_OK。それ以外の場合は E_ILLEGAL_METHOD_CALL。

AsyncBase::OnCancel

派生クラスでオーバーライドされるとき、非同期操作をキャンセルします。

virtual void OnCancel(
   void
) = 0;

AsyncBase::OnClose

派生クラスでオーバーライドされるとき、非同期操作を閉じます。

virtual void OnClose(
   void
) = 0;

AsyncBase::OnStart

派生クラスでオーバーライドされるとき、非同期操作を開始します。

virtual HRESULT OnStart(
   void
) = 0;

AsyncBase::put_Id

非同期操作のハンドルを設定します。

STDMETHOD(
   put_Id
)(const unsigned int id);

パラメーター

id
0 以外のハンドル。

戻り値

成功した場合は S_OK。それ以外の場合は E_INVALIDARG または E_ILLEGAL_METHOD_CALL。

AsyncBase::PutOnComplete

完了イベント ハンドラーのアドレスを指定した値に設定します。

STDMETHOD(
   PutOnComplete
)(TComplete* completeHandler);

パラメーター

completeHandler
完了イベント ハンドラーに設定するアドレス。

戻り値

成功した場合は S_OK。それ以外の場合は E_ILLEGAL_METHOD_CALL。

AsyncBase::PutOnProgress

進行状況イベント ハンドラーのアドレスを指定した値に設定します。

STDMETHOD(
   PutOnProgress
)(TProgress* progressHandler);

パラメーター

progressHandler
進行状況イベント ハンドラーに設定するアドレス。

戻り値

成功した場合は S_OK。それ以外の場合は E_ILLEGAL_METHOD_CALL。

AsyncBase::Start

非同期操作を開始します。

STDMETHOD(
   Start
)(void);

戻り値

操作が開始される場合、または既に開始している場合は S_OK、それ以外の場合は E_ILLEGAL_STATE_CHANGE。

解説

Start() は保護されたメソッドです。呼び出し元に戻る前に非同期操作が "ホット スタート" を行うので、外部からは参照できません。

AsyncBase::TryTransitionToCompleted

現在の非同期操作が完了したかどうかを示します。

bool TryTransitionToCompleted(
   void
);

戻り値

非同期操作が完了した場合は true。それ以外の場合は false

AsyncBase::TryTransitionToError

指定したエラー コードが内部エラー状態を変更できるかどうかを示します。

bool TryTransitionToError(
   const HRESULT error
);

パラメーター

error
エラー HRESULT。

戻り値

内部エラー状態が変更された場合は true。それ以外の場合は false

解説

この操作では、エラー状態が既に S_OK に設定されている場合にのみ、エラー状態が変更されます。 エラー状態が既にエラー、キャンセル済み、完了、または終了になっている場合、この操作の影響はありません。