Partager via


ICLRTask::Reset, méthode

Mise à jour : novembre 2007

Informe le Common Language Runtime (CLR) que l'hôte a terminé une tâche et permet au runtime de réutiliser l'instance d'ICLRTask actuelle pour représenter une autre tâche.

HRESULT Reset (
    [in] BOOL fFull
);

Paramètres

  • fFull
    [in] true, si le runtime doit réinitialiser toutes les valeurs statiques liées au thread en plus de la sécurité et des informations de paramètres régionaux liées à l'instance ICLRTask actuelle ; sinon, false.

    Si la valeur est true, le runtime réinitialise les données stockées à l'aide de AllocateDataSlot ou de AllocateNamedDataSlot.

Valeur de retour

HRESULT

Description

S_OK

Reset a été retourné correctement.

HOST_E_CLRNOTAVAILABLE

Le CLR n'a pas été chargé dans un processus ou le CLR présente un état dans lequel il ne peut pas exécuter de code managé ou traiter l'appel avec succès.

HOST_E_TIMEOUT

L'appel a expiré.

HOST_E_NOT_OWNER

L'appelant ne possède pas le verrou.

HOST_E_ABANDONED

Un événement a été annulé alors qu'un thread bloqué ou une fibre l'attendait.

E_FAIL

Une défaillance grave et inconnue s'est produite. Lorsqu'une méthode retourne E_FAIL, le CLR n'est plus utilisable dans le processus. Les appels suivants aux méthodes d'hébergement retournent HOST_E_CLRNOTAVAILABLE.

Notes

Le Common Language Runtime (CLR) peut recycler des instances ICLRTask déjà créées pour gagner le temps de système lié à la création répétée d'instances à chaque fois qu'il a besoin d'une tâche nouvelle. L'hôte active cette fonction en appelant ICLRTask::Reset au lieu de ICLRTask::ExitTask lorsqu'il a terminé une tâche. La liste suivante récapitule le cycle de vie normal d'une instance ICLRTask.

  1. Le runtime crée une instance ICLRTask.

  2. Le runtime appelle IHostTaskManager::GetCurrentTask pour obtenir une référence à la tâche hôte actuelle.

  3. Le runtime appelle IHostTask::SetCLRTask pour associer la nouvelle instance à la tâche hôte.

  4. La tâche s'exécute et se termine.

  5. L'hôte détruit la tâche en appelant ICLRTask::ExitTask.

Reset modifie ce scénario de deux façons. Lors de l'étape 5 ci-dessus, l'hôte appelle Reset pour réinitialiser la tâche, puis découple l'instance d'ICLRTask de son instance IHostTask associée. Le cas échéant, l'hôte peut également mettre en cache l'instance IHostTask pour la réutiliser. Lors de l'étape 1 ci-dessus, le runtime extrait une ICLRTask recyclée du cache au lieu de créer une instance.

Cette méthode fonctionne bien lorsque l'hôte possède également un pool de tâches de travail réutilisables. Lorsque l'hôte détruit l'une de ses instances IHostTask, il détruit la ICLRTask correspondante en appelant ExitTask.

Configuration requise

Plateformes : consultez Configuration requise du .NET Framework.

En-tête : MSCorEE.idl

Bibliothèque : incluse en tant que ressource dans MSCorEE.dll

Versions du .NET Framework : 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Voir aussi

Référence

ICLRTask, interface

ICLRTaskManager, interface

IHostTask, interface

IHostTaskManager, interface