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
:
Le runtime crée une instance
ICLRTask
.Le runtime appelle IHostTaskManager::GetCurrentTask pour obtenir une référence à la tâche hôte actuelle.
Le runtime appelle IHostTask::SetCLRTask pour associer la nouvelle instance à la tâche hôte.
La tâche s’exécute et se termine.
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