IWorkerThreadClient インターフェイス
IWorkerThreadClient
は、CWorkerThread クラスのクライアントによって実装されるインターフェイスです。
重要
このクラスとそのメンバーは、Windows ランタイムで実行するアプリケーションで使用することはできません。
構文
__interface IWorkerThreadClient
メンバー
メソッド
Name | 説明 |
---|---|
CloseHandle | このオブジェクトに関連付けられているハンドルを閉じるには、このメソッドを実装します。 |
実行 | このオブジェクトに関連付けられたハンドルがシグナル状態になったときにコードを実行するには、このメソッドを実装します。 |
解説
ハンドルがシグナル状態になったらワーカー スレッドで実行する必要があるコードがある場合は、このインターフェイスを実装します。
要件
ヘッダー: atlutil.h
IWorkerThreadClient::CloseHandle
このオブジェクトに関連付けられているハンドルを閉じるには、このメソッドを実装します。
HRESULT CloseHandle(HANDLE hHandle);
パラメーター
hHandle
閉じるハンドル。
戻り値
成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。
解説
このメソッドに渡されるハンドルは、CWorkerThread::AddHandle を呼び出して、このオブジェクトに事前に関連付けられています。
例
次のコードは、IWorkerThreadClient::CloseHandle
の単純な実装を示しています。
HRESULT CloseHandle(HANDLE hObject)
{
// Users should do any shutdown operation required here.
// Generally, this means just closing the handle.
if (!::CloseHandle(hObject))
{
// Closing the handle failed for some reason.
return AtlHresultFromLastError();
}
return S_OK;
}
IWorkerThreadClient::Execute
このオブジェクトに関連付けられたハンドルがシグナル状態になったときにコードを実行するには、このメソッドを実装します。
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);
パラメーター
dwParam
ユーザー パラメーター。
hObject
シグナル状態になっているハンドル。
戻り値
成功した場合は S_OK、失敗した場合はエラー HRESULT を返します。
解説
このメソッドに渡されるハンドルと DWORD またはポインターは、CWorkerThread::AddHandle を呼び出して、このオブジェクトに事前に関連付けられています。
例
次のコードは、IWorkerThreadClient::Execute
の単純な実装を示しています。
HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject)
{
// Cast the parameter to its known type.
LONG* pn = reinterpret_cast<LONG*>(dwParam);
// Increment the LONG.
LONG n = InterlockedIncrement(pn);
// Log the results.
printf_s("Handle 0x%08X incremented value to : %d\n", (DWORD_PTR)hObject, n);
return S_OK;
}