> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SetEventOnCompletion

> Especifica um evento que deve ser disparado quando o fence atinge um determinado valor. (ID3D12Fence.SetEventOnCompletion)

Especifica um evento que é gerado quando o fence atinge um determinado valor.

## Sintaxe

```cpp theme={null}
HRESULT SetEventOnCompletion(
    UINT64 Value,
    HANDLE hEvent
)
```

### Parâmetros

*Value*\
Tipo: UINT64

O valor do fence no qual o evento deve ser sinalizado.

*hEvent*\
Tipo: HANDLE

Um identificador para o objeto de evento.

### Valor retornado

Tipo: HRESULT

Este método retorna **E\_OUTOFMEMORY** se os componentes do kernel não tiverem memória suficiente para armazenar o evento em uma lista. Consulte [Códigos de retorno do Direct3D 12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/d3d12-graphics-reference-returnvalues) para outros valores retornados possíveis.

## Comentários

Para especificar vários fences antes que um evento seja disparado, consulte [SetEventOnMultipleFenceCompletion](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device1/methods/id3d12device1_seteventonmultiplefencecompletion_public).

Se *hEvent* for um identificador nulo, esta API não retornará até que os valores de fence especificados tenham sido atingidos.

Este método pode ser chamado com segurança de vários threads ao mesmo tempo.

## Exemplos

O exemplo [D3D12Multithreading](https://learn.microsoft.com/en-us/windows/win32/direct3d12/working-samples) usa **ID3D12Fence::SetEventOnCompletion** da seguinte maneira:

```cpp theme={null}
// Wait for the command list to execute; we are reusing the same command
// list in our main loop but for now, we just want to wait for setup to
// complete before continuing.

// Signal and increment the fence value.
const UINT64 fenceToWaitFor = m_fenceValue;
ThrowIfFailed(m_commandQueue->Signal(m_fence.Get(), fenceToWaitFor));
m_fenceValue++;

// Wait until the fence is completed.
ThrowIfFailed(m_fence->SetEventOnCompletion(fenceToWaitFor, m_fenceEvent));
WaitForSingleObject(m_fenceEvent, INFINITE);
```

Consulte o [Código de exemplo na referência do Direct3D 12](https://learn.microsoft.com/en-us/windows/win32/direct3d12/notes-on-example-code).

## Requisitos

**Cabeçalho:** d3d12\_xs.h ou d3d12\_x.h\
**Biblioteca:** d3d12\_xs.lib ou d3d12\_x.lib\
**Plataformas com suporte**: consoles XBOX Series e família XBOX One

## Confira também

[ID3D12Fence](/pt-BR/reference/graphics/d3d12/interfaces/id3d12fence/id3d12fence_public)

[Sincronização de vários mecanismos](https://learn.microsoft.com/en-us/windows/win32/direct3d12/user-mode-heap-synchronization)


## Related topics

- [SetEventOnMultipleFenceCompletion](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device1/methods/id3d12device1_seteventonmultiplefencecompletion_public.md)
- [Visão geral do DirectStorage](/pt-BR/build/console-features/storage/directstorage/directstorage-overview.md)
- [Wait](/pt-BR/reference/graphics/d3d12/interfaces/id3d12commandqueue/methods/id3d12commandqueue_wait_public.md)
- [GetDeviceRemovedReason](/pt-BR/reference/graphics/d3d12/interfaces/id3d12device/methods/id3d12device_getdeviceremovedreason_public.md)
- [EventExportCompletionStatus](/pt-BR/services/playfab/api-references/events/data-types/eventexportcompletionstatus.md)
