Teilen über


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:

  1. Die Runtime erstellt eine neue ICLRTask-Instanz.

  2. Die Runtime ruft IHostTaskManager::GetCurrentTask auf, um einen Verweis auf die aktuelle Hostaufgabe abzurufen.

  3. Die Runtime ruft IHostTask::SetCLRTask auf, um die neue Instanz der Hostaufgabe zuzuordnen.

  4. Die Aufgabe wird ausgeführt und abgeschlossen.

  5. 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.

Siehe auch