次の方法で共有


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;
}

関連項目

クラス
CWorkerThread クラス