Интерфейс 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;
}