ICLRTask::Reset-Methode
Informiert die Common Language Runtime (CLR) darüber, dass der Host eine Aufgabe abgeschlossen hat, und ermöglicht es der CLR, die aktuelle ICLRTask--Instanz wiederzuverwenden, um eine andere Aufgabe zu repräsentieren.
Syntax
HRESULT Reset (
[in] BOOL fFull
);
Parameter
fFull
[in] true
, wenn die Runtime zusätzlich zu den Sicherheits- und Gebietsschemainformationen im Zusammenhang mit der aktuellen ICLRTask
-Instanz alle threadbezogenen statischen Werte zurücksetzen soll; andernfalls false
.
Wenn der Wert true
ist, setzt die Runtime Daten zurück, die mit AllocateDataSlot oder AllocateNamedDataSlot gespeichert wurden.
Rückgabewert
HRESULT | BESCHREIBUNG |
---|---|
S_OK | Reset wurde erfolgreich zurückgegeben. |
HOST_E_CLRNOTAVAILABLE | Die CLR wurde nicht in einen Prozess geladen oder befindet sich in einem Zustand, in dem sie keinen verwalteten Code ausführen oder den Aufruf nicht verarbeiten kann. erfolgreich |
HOST_E_TIMEOUT | Timeout des Aufrufs. |
HOST_E_NOT_OWNER | Der Aufrufer besitzt die Sperre nicht. |
HOST_E_ABANDONED | Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber darauf gewartet hat. |
E_FAIL | Es ist ein unbekannter katastrophaler Fehler aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR nicht mehr innerhalb des Prozesses verwendet werden. Nachfolgende Aufrufe von Hostingmethoden geben HOST_E_CLRNOTAVAILABLE zurück. |
Bemerkungen
Die CLR kann zuvor erstellte ICLRTask
-Instanzen wiederverwenden, um den Overhead durch das wiederholte Erstellen neuer Instanzen bei jeder neuen Aufgabe zu vermeiden. Der Host aktiviert dieses Feature durch Aufrufen von ICLRTask::Reset
anstelle von ICLRTask::ExitTask, wenn eine Aufgabe abgeschlossen wurde. Die folgende Liste fasst den normalen Lebenszyklus einer ICLRTask
-Instanz zusammen:
Die Runtime erstellt eine neue
ICLRTask
-Instanz.Die Runtime ruft IHostTaskManager::GetCurrentTask auf, um einen Verweis auf die aktuelle Hostaufgabe abzurufen.
Die Runtime ruft IHostTask::SetCLRTask auf, um die neue Instanz der Hostaufgabe zuzuordnen.
Die Aufgabe wird ausgeführt und abgeschlossen.
Der Host zerstört die Aufgabe durch Aufrufen von
ICLRTask::ExitTask
.
Reset
ändert dieses Szenario auf zwei Arten. In Schritt 5 oben ruft der Host Reset
auf, um die Aufgabe auf einen sauberen Zustand zurückzusetzen, und entkoppelt dann die ICLRTask
-Instanz von der zugeordneten IHostTask-Instanz. Bei Bedarf kann der Host die IHostTask
-Instanz auch zur Wiederverwendung zwischenspeichern. In Schritt 1 oben ruft die Runtime eine ICLRTask
-Instanz zur Wiederverwendung aus dem Cache ab, anstatt eine neue Instanz zu erstellen.
Dieser Ansatz funktioniert gut, wenn der Host auch über einen Pool wiederverwendbarer Workeraufgaben verfügt. Wenn der Host eine seiner IHostTask
-Instanzen zerstört, wird die entsprechende ICLRTask
durch Aufrufen von ExitTask
zerstört.
Anforderungen
Plattformen: Informationen finden Sie unter Systemanforderungen.
Header: MSCorEE.h
Bibliothek: Als Ressource in „MsCorEE.dll“ enthalten.
.NET Framework-Versionen: Seit 2.0 verfügbar.