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