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:
Die Common Language Runtime erstellt eine neue ICLRTask-Instanz.
Die Common Language Runtime ruft IHostTaskManager::GetCurrentTask auf, um einen Verweis auf die aktuelle Hostaufgabe abzurufen.
Die Common Language 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, 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