Compartilhar via


Método ICLRTask::Reset

Informa ao CLR (Common Language Runtime) que o host concluiu uma tarefa e permite que o CLR reutilize a instância atual do ICLRTask para representar outra tarefa.

Sintaxe

HRESULT Reset (  
    [in] BOOL fFull  
);  

Parâmetros

fFull
[in] true, se o runtime deve redefinir todos os valores estáticos relacionados ao thread, além das informações de segurança e localidade relacionadas à instância atual ICLRTask; caso contrário, false.

Se o valor for true, o runtime redefine os dados que foram armazenados usando AllocateDataSlot ou AllocateNamedDataSlot.

Valor Retornado

HRESULT Descrição
S_OK Reset retornado com êxito.
HOST_E_CLRNOTAVAILABLE O CLR não foi carregado em um processo, ou o CLR está em um estado no qual não pode executar código gerenciado ou processar a chamada. com êxito
HOST_E_TIMEOUT Uma chamada atingiu o tempo limite.
HOST_E_NOT_OWNER O chamador não possui o bloqueio.
HOST_E_ABANDONED Um evento foi cancelado enquanto uma fibra ou um thread bloqueado estava esperando por ele.
E_FAIL Uma falha catastrófica desconhecida ocorreu. Quando um método retorna E_FAIL, o CLR não pode mais ser usado no processo. Chamadas subsequentes para métodos de hospedagem retornam HOST_E_CLRNOTAVAILABLE.

Comentários

O CLR pode reciclar instâncias ICLRTask criadas anteriormente para evitar a sobrecarga de criar repetidamente novas instâncias sempre que precisar de uma nova tarefa. O host habilita esse recurso chamando ICLRTask::Reset em vez de ICLRTask::ExitTask quando ele tiver concluído uma tarefa. A lista a seguir resume o ciclo de vida normal de uma instância ICLRTask:

  1. O runtime cria uma nova instância ICLRTask.

  2. O runtime chama IHostTaskManager::GetCurrentTask para obter uma referência à tarefa do host atual.

  3. O runtime chama IHostTask::SetCLRTask para associar a nova instância à tarefa do host.

  4. A tarefa é executada e concluída.

  5. O host destrói a tarefa chamando ICLRTask::ExitTask.

Reset altera esse cenário de duas maneiras. Na etapa 5 acima, o host chama Reset para redefinir a tarefa para um estado limpo e, em seguida, separa a instância ICLRTask de sua instância IHostTask associada. Se desejado, o host também pode armazenar em cache a instância IHostTask para reutilização. Na etapa 1 acima, o runtime extrai um ICLRTask reciclado do cache em vez de criar uma nova instância.

Essa abordagem funciona bem quando o host também tem um pool de tarefas de trabalho reutilizáveis. Quando o host destrói uma de suas instâncias IHostTask, ele destrói o correspondente ICLRTask chamando ExitTask.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: MSCorEE.h

Biblioteca: incluída como um recurso no MSCorEE.dll

Versões do .NET Framework: disponíveis desde 2.0

Confira também