Compartir a través de


task_continuation_context (Clase)

La clase task_continuation_context permite especificar dónde se desea que se ejecute una continuación. Solo es útil usar esta clase desde una Windows Runtime aplicación. Para las aplicaciones que no sean de la Windows Runtime, el contexto de ejecución de la continuación de la tarea determina el runtime y no se puede configurar.

Sintaxis

class task_continuation_context : public details::_ContextCallback;

Miembros

Métodos públicos

Nombre Descripción
get_current_winrt_context Devuelve un objeto de contexto de continuación de tarea que representa el contexto del subproceso winrt actual.
use_arbitrary Crea un contexto de continuación de la tarea que permite elegir el contexto de ejecución para una continuación en el tiempo de ejecución.
use_current Devuelve un objeto de contexto de continuación de tarea que representa el contexto de ejecución actual.
use_default Crea el contexto de continuación de tarea predeterminado.
use_synchronous_execution Devuelve un objeto de contexto de continuación de tarea que representa el contexto de ejecución sincrónico.

Jerarquía de herencia

_ContextCallback

task_continuation_context

Requisitos

Encabezado: ppltasks.h

Espacio de nombres: simultaneidad

get_current_winrt_context

Devuelve un objeto de contexto de continuación de tarea que representa el contexto del subproceso winRT actual.

Sintaxis

static task_continuation_context get_current_winrt_context();

Valor devuelto

Contexto de subproceso de Windows Runtime actual. Devuelve un task_continuation_context vacío si se llama desde un contexto que no es Windows Runtime.

Comentarios

El get_current_winrt_context método captura el contexto del subproceso Windows Runtime del autor de la llamada. Devuelve un contexto vacío a los autores de llamadas que no son Windows Runtime.

El valor devuelto por get_current_winrt_context se puede usar para indicar al Runtime que la continuación debe ejecutarse en el modelo de apartamento del contexto capturado (STA frente a MTA), independientemente de si la tarea anterior es compatible con el apartamento. Una tarea compatible con apartamentos es una tarea que desencapsula una interfaz de Windows Runtime IAsyncInfo o una tarea que desciende de dicha tarea.

Este método es similar al use_current método, pero también está disponible para el código nativo de C++ sin compatibilidad con la extensión de C++/CX. Está pensado para su uso por parte de usuarios avanzados que escriben código de biblioteca independiente de C++/CX para los autores de llamadas nativos y de Windows Runtime. A menos que necesite esta funcionalidad, se recomienda el use_current método, que solo está disponible para los clientes de C++/CX.

use_arbitrary

Crea un contexto de continuación de la tarea que permite elegir el contexto de ejecución para una continuación en el tiempo de ejecución.

Sintaxis

static task_continuation_context use_arbitrary();

Valor devuelto

Contexto de continuación de tareas que representa una ubicación arbitraria.

Comentarios

Cuando se usa este contexto de continuación, la continuación se ejecutará en un contexto que el tiempo de ejecución elija incluso si la tarea antecedente es compatible con el apartamento.

use_arbitrary se puede usar para desactivar el comportamiento predeterminado de una continuación en una tarea compatible con el apartamento creada en una STA.

Este método solo está disponible para Windows Runtime aplicaciones.

use_current

Devuelve un objeto de contexto de continuación de tarea que representa el contexto de ejecución actual.

static task_continuation_context use_current();

Valor devuelto

Contexto de ejecución actual.

Comentarios

Este método captura el contexto de Windows Runtime del autor de la llamada para que las continuaciones se puedan ejecutar en el apartamento correcto.

El valor devuelto por use_current se puede usar para indicar al Runtime que la continuación debe ejecutarse en el contexto capturado (STA frente a MTA), independientemente de si la tarea anterior es compatible con el apartamento. Una tarea compatible con apartamentos es una tarea que desencapsula una interfaz de Windows Runtime IAsyncInfo o una tarea que desciende de dicha tarea.

Este método solo está disponible para Windows Runtime aplicaciones.

use_default

Crea el contexto de continuación de tarea predeterminado.

static task_continuation_context use_default();

Valor devuelto

Contexto de continuación predeterminado.

Comentarios

El contexto predeterminado se usa si no especifica un contexto de continuación al llamar al then método. En las aplicaciones de Windows para Windows 7 y versiones posteriores, así como las aplicaciones de escritorio en Windows 8 y versiones posteriores, el tiempo de ejecución determina dónde se ejecutarán las continuaciones de tareas. Sin embargo, en una aplicación Windows Runtime, el contexto de continuación predeterminado para una continuación en una tarea compatible con el apartamento es el apartamento donde then se invoca.

Una tarea compatible con apartamentos es una tarea que desencapsula una interfaz de Windows Runtime IAsyncInfo o una tarea que desciende de dicha tarea. Por lo tanto, si programa una continuación en una tarea compatible con el apartamento en una Windows Runtime STA, la continuación se ejecutará en ese STA.

Una continuación en una tarea que no sea compatible con el apartamento se ejecutará en un contexto que elija runtime.

task_continuation_context::use_synchronous_execution

Devuelve un objeto de contexto de continuación de tarea que representa el contexto de ejecución sincrónico.

Sintaxis

static task_continuation_context use_synchronous_execution();

Valor devuelto

Contexto de ejecución sincrónico.

Comentarios

El use_synchronous_execution método obliga a la tarea de continuación a ejecutarse de forma sincrónica en el contexto, lo que provoca la finalización de su tarea antecedente.

Si la tarea antecedente ya se ha completado cuando se adjunta la continuación, la continuación se ejecuta sincrónicamente en el contexto que adjunta la continuación.

Consulte también

concurrency (espacio de nombres)