Comparteix a través de


ICLRTask::Reset (Método)

Informa al Common Language Runtime (CLR) de 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 tiempo de ejecución 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 CLR está en un estado en el que no puede ejecutar código administrado ni procesar la llamada. correctamente
HOST_E_TIMEOUT Se agota el tiempo de espera de la llamada.
HOST_E_NOT_OWNER El autor de la llamada no posee el bloqueo.
HOST_E_ABANDONED Se canceló un evento mientras un subproceso bloqueado o fibra estaba esperando.
E_FAIL Se produjo un error catastrófico desconocido. Cuando un método devuelve E_FAIL, CLR ya no se puede usar dentro del proceso. Las llamadas posteriores a los métodos de hospedaje devuelven HOST_E_CLRNOTAVAILABLE.

Observaciones

CLR puede reciclar instancias creadas ICLRTask anteriormente para evitar la sobrecarga de crear repetidamente nuevas instancias cada vez que necesita 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 ICLRTask instancia:

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

  2. El tiempo de ejecución llama a IHostTaskManager::GetCurrentTask para obtener una referencia a la tarea 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 Reset a para restablecer la tarea a un estado limpio y, a continuación, desacopla la ICLRTask instancia de su instancia de IHostTask asociada. Si lo desea, el host también puede almacenar en caché la IHostTask instancia para su reutilización. 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 IHostTask instancias, destruye el correspondiente ICLRTask mediante una llamada a ExitTask.

Requisitos

Plataformas: Consulte Requisitos del sistema.

Encabezado: MSCorEE.h

Biblioteca: Incluido como recurso en MSCorEE.dll

Versiones de .NET Framework: Disponible desde la versión 2.0

Consulte también