Skip to main content

XTaskQueueTerminate

Finaliza una cola de tareas cancelando todos los elementos pendientes e impidiendo que se pongan en cola nuevos elementos.

Sintaxis

Parámetros

queue   _In_
Tipo: XTaskQueueHandle
La cola que se finalizará. wait   _In_
Tipo: bool
True para esperar a que se complete la finalización. callbackContext   _In_opt_
Tipo: void*
Un puntero de contexto opcional que se pasará a la devolución de llamada. callback   _In_opt_
Tipo: XTaskQueueTerminatedCallback*
Una devolución de llamada opcional que se llamará cuando la cola haya finalizado.

Valor devuelto

Tipo: HRESULT Código de error o de éxito HRESULT.

Comentarios

No es seguro llamar a esta función en un subproceso sensible al tiempo. Para obtener más información, consulte Subprocesos sensibles al tiempo.
XTaskQueueCloseHandle simplemente disminuye un recuento de referencias interno en el objeto de cola de tareas. Si todavía hay devoluciones de llamada en la cola, esas devoluciones de llamada mantienen una referencia al objeto de cola y es posible que todavía se llamen. Esto puede suponer un problema para el cierre de la aplicación. Cuando una aplicación se cierra, deberá asegurarse de que no se ejecutan devoluciones de llamada espurias después de la limpieza. XTaskQueue proporciona la API XTaskQueueTerminate para realizar una finalización controlada de una cola. Finalizar una cola de tareas realiza las siguientes operaciones:
  1. Todas las devoluciones de llamada de ambos puertos se invocarán con su parámetro canceled establecido en true.
  2. Se distribuirán todas las devoluciones de llamada pendientes en el puerto de trabajo. El envío de nuevas devoluciones de llamada al puerto de trabajo producirá un error E_ABORT.
  3. Se distribuirán todas las devoluciones de llamada pendientes en el puerto de finalización. El envío de nuevas devoluciones de llamada al puerto de finalización producirá un error E_ABORT.
Una vez completado este proceso, XTaskQueueTerminate regresará si wait es true. Si wait es false, la finalización se produce de forma asincrónica. Si proporciona una devolución de llamada de finalización, se invocará desde el subproceso de finalización al final de la finalización.
  • XTaskQueueTerminate no cierra el identificador de la cola. Después de finalizar, todavía debe llamar a XTaskQueueCloseHandle.
  • Si llama a XTaskQueueTerminate en un subproceso que está atendiendo devoluciones de llamada de la cola mediante llamadas a XTaskQueueDispatch, no pase true para el parámetro wait o el código podría interbloquearse.
En el ejemplo siguiente se muestra cómo finalizar una cola de tareas creada anteriormente.
SubmitCallback es una función auxiliar que se define en el ejemplo de código de la función XTaskQueueSubmitCallback.
Una cola de tareas se puede integrar con un subproceso de interfaz de usuario. Normalmente, querrá que las devoluciones de llamada en cola en el puerto de finalización se ejecuten en el subproceso de interfaz de usuario. En este ejemplo se usa el grupo de subprocesos para el trabajo, pero se integran las devoluciones de llamada del puerto de finalización en un Window Proc de Win32. También se muestra la finalización correcta de una cola de tareas al integrarla con otro modelo de subprocesos.

Requisitos

Encabezado: XTaskQueue.h Biblioteca: xgameruntime.lib Plataformas compatibles: Windows, consolas de la familia XBOX One y consolas XBOX Series

Documentación conceptual

Consulte también

Miembros de XTaskQueue
Modelo de programación asincrónica
Diseño de la cola de tareas asincrónicas
Última modificación el 28 de agosto de 2026