Интерфейс ИворкерсреадклиентIWorkerThreadClient Interface
IWorkerThreadClient
— Это интерфейс, реализуемый клиентами класса кворкерсреад .IWorkerThreadClient
is the interface implemented by clients of the CWorkerThread class.
Важно!
Этот класс и его члены не могут использоваться в приложениях, выполняемых в среда выполнения Windows.This class and its members cannot be used in applications that execute in the Windows Runtime.
СинтаксисSyntax
__interface IWorkerThreadClient
ЧленыMembers
МетодыMethods
ИмяName | ОписаниеDescription |
---|---|
CloseHandleCloseHandle | Реализуйте этот метод, чтобы закрыть маркер, связанный с этим объектом.Implement this method to close the handle associated with this object. |
ExecuteExecute | Реализуйте этот метод для выполнения кода, когда дескриптор, связанный с этим объектом, получает сигнал.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
Заголовок: файлов atlutil. hHeader: atlutil.h
Иворкерсреадклиент:: CloseHandleIWorkerThreadClient::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
Возвращает S_OK об успешном выполнении или ошибку HRESULT при сбое.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
В следующем коде показана простая реализация IWorkerThreadClient::CloseHandle
.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;
}
Иворкерсреадклиент:: ExecuteIWorkerThreadClient::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
Параметр User.The user parameter.
хобжектhObject
Дескриптор, который стал сигнальным.The handle that has become signaled.
Возвращаемое значениеReturn Value
Возвращает S_OK об успешном выполнении или ошибку HRESULT при сбое.Return S_OK on success, or an error HRESULT on failure.
КомментарииRemarks
Маркер и DWORD или указатель, переданный этому методу, ранее были связаны с этим объектом посредством вызова кворкерсреад:: аддхандле.The handle and DWORD/pointer passed to this method were previously associated with this object by a call to CWorkerThread::AddHandle.
ПримерExample
В следующем коде показана простая реализация IWorkerThreadClient::Execute
.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;
}