IWorkerThreadClient Interface

IWorkerThreadClient is the interface implemented by clients of the CWorkerThread class.

Important

This class and its members cannot be used in applications that execute in the Windows Runtime.

Syntax

__interface IWorkerThreadClient

Members

Methods

Name Description
CloseHandle Implement this method to close the handle associated with this object.
Execute Implement this method to execute code when the handle associated with this object becomes signaled.

Remarks

Implement this interface when you have code that needs to execute on a worker thread in response to a handle becoming signaled.

Requirements

Header: atlutil.h

IWorkerThreadClient::CloseHandle

Implement this method to close the handle associated with this object.

HRESULT CloseHandle(HANDLE  hHandle);

Parameters

hHandle
The handle to be closed.

Return Value

Return S_OK on success, or an error HRESULT on failure.

Remarks

The handle passed to this method was previously associated with this object by a call to CWorkerThread::AddHandle.

Example

The following code shows a simple implementation of 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

Implement this method to execute code when the handle associated with this object becomes signaled.

HRESULT Execute(DWORD_PTR dwParam, HANDLE hObject);

Parameters

dwParam
The user parameter.

hObject
The handle that has become signaled.

Return Value

Return S_OK on success, or an error HRESULT on failure.

Remarks

The handle and DWORD/pointer passed to this method were previously associated with this object by a call to CWorkerThread::AddHandle.

Example

The following code shows a simple implementation of 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;
}

See also

Classes
CWorkerThread Class