IWorkerThreadClient 接口
IWorkerThreadClient
是 CWorkerThread 类的客户端实现的接口。
重要
无法在 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;
}