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 relative alla sicurezza e alle 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 durante l'attesa di un thread o di una fibra bloccata.
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.

Commenti

CLR può riciclare le istanze create ICLRTask in precedenza per evitare il sovraccarico della creazione ripetuta di nuove istanze ogni volta che richiede una nuova attività. L'host abilita questa funzionalità chiamando ICLRTask::Reset anziché ICLRTask::ExitTask quando ha completato 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 lo si desidera, 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 di .NET Framework.

Intestazione: MSCorEE.h

Libreria: Incluso come risorsa in MSCorEE.dll

Versioni di .NET Framework: Disponibile dalla versione 2.0

Vedi anche