Condividi tramite


Metodo ICLRTask::Reset

Informa Common Language Runtime (CLR) che l'host ha completato un'attività e consente a CLR di riutilizzare l'istanza ICLRTask corrente per rappresentare un'altra attività.

Sintassi

HRESULT Reset (
    [in] BOOL fFull
);

Parametri

fFull [in] true, se il runtime deve reimpostare tutti i valori statici correlati al thread oltre alle informazioni di sicurezza e impostazioni locali correlate all'istanza corrente ICLRTask ; in caso contrario, false.

Se il valore è true, il runtime reimposta i dati archiviati usando AllocateDataSlot o AllocateNamedDataSlot.

Valore restituito

HRESULT Descrizione
S_OK Reset restituito correttamente.
HOST_E_CLRNOTAVAILABLE CLR non è stato caricato in un processo oppure CLR si trova in uno stato in cui non può eseguire codice gestito o elaborare la chiamata. Correttamente
HOST_E_TIMEOUT Timeout della chiamata.
HOST_E_NOT_OWNER Il chiamante non possiede il blocco.
HOST_E_ABANDONED Un evento è stato annullato mentre un thread bloccato o una fibra era in attesa su di esso.
E_FAIL Si è verificato un errore irreversibile sconosciuto. Quando un metodo restituisce E_FAIL, CLR non è più utilizzabile all'interno del processo. Le chiamate successive ai metodi di hosting restituiscono HOST_E_CLRNOTAVAILABLE.

Osservazioni:

CLR può riciclare le istanze create ICLRTask in precedenza per evitare il sovraccarico della creazione ripetuta di nuove istanze ogni volta che necessita di un'attività aggiornata. L'host abilita questa funzionalità chiamando ICLRTask::Reset invece di ICLRTask::ExitTask al termine di un'attività. L'elenco seguente riepiloga il normale ciclo di vita di un'istanza ICLRTask :

  1. Il runtime crea una nuova ICLRTask istanza.

  2. Il runtime chiama IHostTaskManager::GetCurrentTask per ottenere un riferimento all'attività host corrente.

  3. Il runtime chiama IHostTask::SetCLRTask per associare la nuova istanza all'attività host.

  4. L'attività viene eseguita e completata.

  5. L'host elimina definitivamente l'attività chiamando ICLRTask::ExitTask.

Reset modifica questo scenario in due modi. Nel passaggio 5 precedente, l'host chiama Reset per reimpostare l'attività a uno stato pulito e quindi separa l'istanza dall'istanza ICLRTaskdi IHostTask associata. Se necessario, l'host può anche memorizzare nella cache l'istanza IHostTask per il riutilizzo. Nel passaggio 1 precedente, il runtime esegue il pull di un oggetto riciclato ICLRTask dalla cache invece di creare una nuova istanza.

Questo approccio funziona bene quando l'host dispone anche di un pool di attività di lavoro riutilizzabili. Quando l'host elimina una delle relative IHostTask istanze, elimina l'oggetto corrispondente ICLRTask chiamando ExitTask.

Requisiti

Piattaforme: Vedere Requisiti di sistema.

Intestazione: MSCorEE.h

Biblioteca: Incluso come risorsa in MSCorEE.dll

Versioni di .NET Framework: Disponibile dalla versione 2.0

Vedere anche