IWorkerThreadClient 接口

IWorkerThreadClientCWorkerThread 类的客户端实现的接口。

重要

无法在 Windows 运行时中执行的应用程序中使用此类及其成员。

语法

__interface IWorkerThreadClient

成员

方法

名称 描述
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 类