Partager via


ICLRTask::Reset, méthode

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

Syntaxe

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 des informations de sécurité et 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 avec AllocateDataSlot ou AllocateNamedDataSlot.

Valeur de retour

HRESULT Description
S_OK Reset retourné.
HOST_E_CLRNOTAVAILABLE Le CLR n’a pas été chargé dans un processus ou est dans un état dans lequel il ne peut pas exécuter le code managé ou traiter l’appel. avec succès
HOST_E_TIMEOUT L’appel a expiré.
HOST_E_NOT_OWNER L’appelant n’est pas propriétaire du verrou.
HOST_E_ABANDONED Un événement a été annulé alors qu’un thread ou une fibre bloqué l’attendait.
E_FAIL Une défaillance catastrophique inconnue s’est produite. Quand une méthode retourne E_FAIL, le CLR n’est plus utilisable au sein du processus. Les appels suivants aux méthodes d’hébergement renvoient HOST_E_CLRNOTAVAILABLE.

Notes

Le CLR peut recycler les instances ICLRTask précédemment créées pour éviter la surcharge liée à la création répétée d’instances chaque fois qu’il a besoin d’une nouvelle tâche. L’hôte active cette fonctionnalité en appelant ICLRTask::Reset au lieu de ICLRTask::ExitTask lorsqu’il a terminé une tâche. La liste suivante résume 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. À l’étape 5 ci-dessus, l’hôte appelle Reset pour réinitialiser la tâche à un état propre, puis dissocie l’instance ICLRTask de son instance IHostTask associée. Si vous le souhaitez, l’hôte peut également mettre en cache l’instance IHostTask pour la réutiliser. À l’étape 1 ci-dessus, le runtime extrait un ICLRTask recyclé du cache au lieu de créer une instance.

Cette approche fonctionne bien lorsque l’hôte dispose également d’un pool de tâches worker réutilisables. Quand l’hôte détruit l’une de ses instances IHostTask, il détruit le ICLRTask correspondant en appelant ExitTask.

Spécifications

Plateformes : Consultez Configuration requise.

En-tête : MSCorEE.h

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

Versions de .NET Framework : Disponible depuis la version 2.0

Voir aussi