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
:
El tiempo de ejecución crea una nueva instancia
ICLRTask
.El tiempo de ejecución llama a IHostTaskManager::GetCurrentTask para obtener una referencia a la tarea de host actual.
El tiempo de ejecución llama a IHostTask::SetCLRTask para asociar la nueva instancia a la tarea host.
La tarea se ejecuta y se completa.
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