ID3D12Fence::SetEventOnCompletion 方法 (d3d12.h)

指定當柵欄達到特定值時所引發的事件。

語法

HRESULT SetEventOnCompletion(
  UINT64 Value,
  HANDLE hEvent
);

參數

Value

類型: UINT64

事件發出訊號時,柵欄值。

hEvent

類型: HANDLE

事件物件的控制碼。

傳回值

類型: HRESULT

如果核心元件沒有足夠的記憶體可將事件儲存在清單中,這個方法會傳回 E_OUTOFMEMORY 。 如需其他可能的傳回值,請參閱 Direct3D 12 傳回碼

備註

若要在觸發事件之前指定多個柵欄,請參閱 SetEventOnMultipleFenceCompletion

如果 hEvent 是 Null 控制碼,則除非到達指定的柵欄值 () ,否則此 API 將不會傳回。

一次可以從多個執行緒安全地呼叫這個方法。

範例

D3D12Multithreading範例使用ID3D12Fence::SetEventOnCompletion,如下所示:

// 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);

請參閱 Direct3D 12 參考中的範例程式碼

需求

   
目標平台 Windows
標頭 d3d12.h
程式庫 D3D12.lib
Dll D3D12.dll

另請參閱

ID3D12Fence

多引擎同步處理