ICLRTask::Reset (Método)

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

Sintaxis

HRESULT Reset (  
    [in] BOOL fFull  
);  

Parámetros

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

Si el valor es true, el tiempo de ejecución restablece los datos almacenados mediante AllocateDataSlot o AllocateNamedDataSlot.

Valor devuelto

HRESULT Descripción
S_OK Reset se devolvió correctamente.
HOST_E_CLRNOTAVAILABLE CLR no se ha cargado en un proceso o está en un estado en el que no puede ejecutar código administrado ni procesar la llamada correctamente.
HOST_E_TIMEOUT Se agotó el tiempo de espera de la llamada.
HOST_E_NOT_OWNER El autor de la llamada no es el propietario del bloqueo.
HOST_E_ABANDONED Se canceló un evento mientras que una fibra o subproceso que estaba bloqueado lo estaba esperando.
E_FAIL Ocurrió un error grave desconocido. Si un método devuelve el valor E_FAIL, el CLR ya no se podrá usar en el proceso. Las llamadas que se hagan a los métodos de hospedaje posteriormente devolverán el valor HOST_E_CLRNOTAVAILABLE.

Comentarios

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

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

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

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

  4. La tarea se ejecuta y se completa.

  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 a un estado limpio y, a continuación, desacopla la instancia ICLRTask de su instancia de IHostTask asociada. Si lo desea, el host también puede almacenar en caché la instancia IHostTask para reutilizarla. En el paso 1 anterior, el tiempo de ejecución extrae un reciclado ICLRTask de la memoria 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 IHostTask, destruye el correspondiente ICLRTask mediante una llamada a ExitTask.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: MSCorEE.h

Biblioteca: incluida como recurso en MSCorEE.dll

Versiones de .NET Framework: disponible a partir de la versión 2.0

Consulte también