Freigeben über


ICLRTask::Reset-Methode

Aktualisiert: November 2007

Benachrichtigt die Common Language Runtime (CLR), dass der Host eine Aufgabe abgeschlossen hat, und ermöglicht es der CLR, die aktuelle ICLRTask-Instanz zur Darstellung einer weiteren Aufgabe wiederzuverwenden.

HRESULT Reset (
    [in] BOOL fFull
);

Parameter

  • fFull
    [in] true, wenn die Common Language Runtime alle threadbezogenen statischen Werte zusätzlich zu den Sicherheits- und Gebietsschemainformationen, die zu aktuellen ICLRTask-Instanz gehören, zurücksetzen soll; andernfalls false.

    Wenn der Wert true ist, setzt die Common Language Runtime Daten zurück, die mithilfe von AllocateDataSlot oder AllocateNamedDataSlot gespeichert wurden.

Rückgabewert

HRESULT

Beschreibung

S_OK

Reset kehrte erfolgreich zurück.

HOST_E_CLRNOTAVAILABLE

Die CLR wurde nicht in einen Prozess geladen oder befindet sich in einem Zustand, in dem sie weder verwalteten Code ausführen noch den Aufruf erfolgreich verarbeiten kann.

HOST_E_TIMEOUT

Der Aufruf hat das Zeitlimit überschritten.

HOST_E_NOT_OWNER

Der Aufrufer ist nicht Besitzer der Sperre.

HOST_E_ABANDONED

Ein Ereignis wurde abgebrochen, während ein blockierter Thread oder eine blockierte Fiber auf das Ereignis gewartet hat.

E_FAIL

Ein unbekannter, schwerwiegender Fehler ist aufgetreten. Wenn eine Methode E_FAIL zurückgibt, kann die CLR innerhalb des Prozesses nicht mehr verwendet werden. Nachfolgende Aufrufe von Hostmethoden geben HOST_E_CLRNOTAVAILABLE zurück.

Hinweise

Die CLR kann zuvor erstellte ICLRTask-Instanzen wiederverwenden, um zu vermeiden, dass ständig neue Instanzen erstellt werden müssen, wenn sie eine neue Aufgabe benötigt. Der Host aktiviert dieses Feature, indem er nach Abschluss einer Aufgabe ICLRTask::Reset an Stelle von ICLRTask::ExitTask aufruft. Die folgende Liste fasst den normalen Lebenszyklus einer ICLRTask-Instanz zusammen:

  1. Die Common Language Runtime erstellt eine neue ICLRTask-Instanz.

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

  3. Die Common Language 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, indem er ICLRTask::ExitTask aufruft.

Reset ändert dieses Szenario auf zwei Weisen. In Schritt 5 ruft der Host Reset auf, um die Aufgabe in einen bereinigten Zustand zurückzusetzen. Anschließend entkoppelt er die ICLRTask-Instanz von ihrer zugeordneten IHostTask-Instanz. Wenn erforderlich, kann der Host die IHostTask-Instanz auch zur erneuten Verwendung zwischenspeichern. In Schritt 1 holt die Runtime eine wiederverwendete ICLRTask aus dem Zwischenspeicher, statt eine neue Instanz zu erstellen.

Dieser Ansatz funktioniert gut, wenn der Host auch über einen Pool von von wiederverwendbaren Arbeitsaufgaben verfügt. Wenn der Host eine seiner IHostTask-Instanzen zerstört, zerstört er die entsprechende ICLRTask, indem er ExitTask aufruft.

Anforderungen

Plattformen: siehe Systemanforderungen für .NET Framework.

Header: MSCorEE.idl

Bibliothek: als Ressource in MSCorEE.dll enthalten

.NET Framework-Versionen: 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

Siehe auch

Referenz

ICLRTask-Schnittstelle

ICLRTaskManager-Schnittstelle

IHostTask-Schnittstelle

IHostTaskManager-Schnittstelle