Интерфейс IWorkerThreadClient

IWorkerThreadClient — интерфейс, реализованный клиентами класса CWorkerThread .

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

__interface IWorkerThreadClient

Участники

Методы

Имя Описание
CloseHandle Реализуйте этот метод, чтобы закрыть дескриптор, связанный с этим объектом.
Execute Реализуйте этот метод для выполнения кода, когда дескриптор, связанный с этим объектом, становится сигналом.

Замечания

Реализуйте этот интерфейс при наличии кода, который должен выполняться в рабочем потоке в ответ на сигнал дескриптор.

Требования

Заголовок: 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