Compartir a través de


ICLRTask::Reset (Método)

Informa a Common Language Runtime (CLR) de que el host ha completado una tarea, y permite a CLR reutilizar la instancia de ICLRTask actual para representar otra tarea.

HRESULT Reset (
    [in] BOOL fFull
);

Parámetros

  • fFull
    [in] true, si el motor en tiempo de ejecución debe restablecer todos los valores estáticos relacionados con los subprocesos, además de la información de seguridad y de configuración regional relacionada con la instancia de ICLRTask actual; en caso contrario, false.

    Si el valor es true, el motor en tiempo de ejecución restablece los datos que se almacenaron utilizando AllocateDataSlot o AllocateNamedDataSlot.

Valor devuelto

HRESULT

Descripción

S_OK

Reset finalizó correctamente.

HOST_E_CLRNOTAVAILABLE

CLR no se ha cargado en un proceso o está en un estado en el que no puede ejecutar el código administrado o procesar la llamada. correctamente

HOST_E_TIMEOUT

Se agotó el tiempo de espera de la llamada.

HOST_E_NOT_OWNER

El llamador no posee el bloqueo.

HOST_E_ABANDONED

Se canceló un evento mientras una fibra o un subproceso bloqueado estaba esperándole.

E_FAIL

Se ha producido un error catastrófico desconocido. Si un método devuelve E_FAIL, CLR no se puede seguir utilizando en el proceso. Las llamadas subsiguientes a métodos de hospedaje devuelven HOST_E_CLRNOTAVAILABLE.

Comentarios

CLR puede reciclar las instancias de ICLRTask creadas previamente para evitar la sobrecarga que implica la creación de nuevas instancias cada vez que necesita una tarea nueva. El host habilita esta característica llamando a ICLRTask::Reset en lugar de a ICLRTask::ExitTask cuando se ha completado una tarea. En la lista siguiente se resume el ciclo de vida normal de una instancia de ICLRTask:

  1. El motor en tiempo de ejecución crea una nueva instancia de ICLRTask.

  2. El motor en tiempo de ejecución llama a IHostTaskManager::GetCurrentTask para obtener una referencia a la tarea actual del host.

  3. El motor en tiempo de ejecución llama a IHostTask::SetCLRTask para asociar la nueva instancia a la tarea del host.

  4. La tarea se ejecuta y finaliza.

  5. El host destruye la tarea llamando a ICLRTask::ExitTask.

Reset modifica este escenario de dos maneras. En el paso 5 anterior, el host llama a Reset para restablecer la tarea en un estado limpio y, a continuación, desacopla la instancia de ICLRTask de su instancia de IHostTask asociada. Si se desea, el host también puede almacenar en memoria caché la instancia de IHostTask para volverla a utilizar. En el paso 1 anterior, el motor en tiempo de ejecución extrae una instancia de ICLRTask reciclada de la caché en lugar de crear una nueva instancia.

Este enfoque funciona bien cuando el host también tiene un grupo de tareas de trabajo reutilizables. Cuando el host destruye una de sus instancias de IHostTask, destruye la instancia de ICLRTask correspondiente llamando a ExitTask.

Requisitos

Plataformas: vea Requisitos de sistema de .NET Framework.

Encabezado: MSCorEE.h

Biblioteca: Se incluye como recurso en MsCorEE.dll

Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Vea también

Referencia

ICLRTask (Interfaz)

ICLRTaskManager (Interfaz)

IHostTask (Interfaz)

IHostTaskManager (Interfaz)