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 associées à l’instance actuelle ICLRTask ; sinon, false.

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

Valeur de retour

HRESULT Description
S_OK Reset retourné avec succès.
HOST_E_CLRNOTAVAILABLE Le CLR n’a pas été chargé dans un processus, ou le CLR est dans un état dans lequel il ne peut pas exécuter de code managé ou traiter l’appel. Réussi
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é pendant qu’un thread bloqué ou fibre attendait dessus.
E_FAIL Une défaillance catastrophique 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.

Remarques

Le CLR peut recycler les instances créées ICLRTask précédemment pour éviter la surcharge de création répétée de nouvelles instances chaque fois qu’elle a besoin d’une nouvelle tâche. L’hôte active cette fonctionnalité en appelant ICLRTask::Reset au lieu d’ICLRTask ::ExitTask lorsqu’elle a terminé une tâche. La liste suivante résume le cycle de vie normal d’une ICLRTask instance :

  1. Le runtime crée une ICLRTask instance.

  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 manières. À 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 à des fins de réutilisation. À l’étape 1 ci-dessus, le runtime extrait un recyclage ICLRTask à partir 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 de travail réutilisables. Lorsque l’hôte détruit l’une de ses IHostTask instances, il détruit le correspondant ICLRTask en appelant ExitTask.

Exigences

Plateformes : Consultez Configuration requise.

En-tête: MSCorEE.h

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

Versions du .NET Framework : Disponible depuis la version 2.0

Voir également