Methode ICLRTask::Reset
Informeert de Common Language Runtime (CLR) dat de host een taak heeft voltooid en stelt de CLR in staat om het huidige ICLRTask-exemplaar opnieuw te gebruiken om een andere taak weer te geven.
Syntaxis
HRESULT Reset (
[in] BOOL fFull
);
Parameters
fFull
[in] true
, als de runtime alle thread-gerelateerde statische waarden moet herstellen, naast de beveiligings- en landinstellingsinformatie met betrekking tot het huidige ICLRTask
exemplaar; anders, false
.
Als de waarde istrue
, stelt de runtime gegevens die zijn opgeslagen met of AllocateNamedDataSlotAllocateDataSlot opnieuw in.
Retourwaarde
HRESULT | Beschrijving |
---|---|
S_OK | Reset is geretourneerd. |
HOST_E_CLRNOTAVAILABLE | De CLR is niet geladen in een proces of de CLR bevindt zich in een status waarin beheerde code niet kan worden uitgevoerd of de aanroep kan worden verwerkt. Succesvol |
HOST_E_TIMEOUT | Er is een time-out opgetreden voor het gesprek. |
HOST_E_NOT_OWNER | De beller is niet de eigenaar van het vergrendelingsslot. |
HOST_E_ABANDONED | Een gebeurtenis is geannuleerd terwijl er een geblokkeerde thread of vezel op wachtte. |
E_FAIL | Er is een onbekende catastrofale fout opgetreden. Wanneer een methode E_FAIL retourneert, is de CLR niet meer bruikbaar binnen het proces. Volgende aanroepen naar hostingmethoden retourneren HOST_E_CLRNOTAVAILABLE. |
Opmerkingen
De CLR kan eerder gemaakte ICLRTask
exemplaren recyclen om de overhead te voorkomen van het herhaaldelijk maken van nieuwe exemplaren wanneer er een nieuwe taak nodig is. De host schakelt deze functie in door aan te roepen ICLRTask::Reset
in plaats van ICLRTask::ExitTask wanneer een taak is voltooid. De volgende lijst bevat een overzicht van de normale levenscyclus van een ICLRTask
exemplaar:
De runtime maakt een nieuw
ICLRTask
exemplaar.De runtime roept IHostTaskManager::GetCurrentTask aan om een verwijzing naar de huidige hosttaak op te halen.
De runtime roept IHostTask::SetCLRTask aan om het nieuwe exemplaar te koppelen aan de hosttaak.
De taak wordt uitgevoerd en voltooid.
De host vernietigt de taak door aan te roepen
ICLRTask::ExitTask
.
Reset
wijzigt dit scenario op twee manieren. In stap 5 hierboven roept Reset
de host aan om de taak opnieuw in te stellen op een schone status en wordt het exemplaar vervolgens losgekoppeld van het ICLRTask
bijbehorende IHostTask-exemplaar . Indien gewenst kan de host het exemplaar ook opslaan in de IHostTask
cache voor hergebruik. In stap 1 hierboven haalt de runtime een gerecyclede ICLRTask
op uit de cache in plaats van een nieuw exemplaar te maken.
Deze aanpak werkt goed wanneer de host ook een pool met herbruikbare werktaken heeft. Wanneer de host een van de IHostTask
exemplaren vernietigt, worden de bijbehorende ICLRTask
exemplaren vernietigd door aan te roepen ExitTask
.
Vereisten
Platforms: Zie Systeemvereisten.
Header: MSCorEE.h
Bibliotheek: Opgenomen als een resource in MSCorEE.dll
.NET Framework versies: beschikbaar sinds 2.0