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 ICLRTask atual 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 armazenados usando AllocateDataSlot ou AllocateNamedDataSlot.

Valor de retorno

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 o código gerenciado ou processar a chamada. Sucesso
HOST_E_TIMEOUT A chamada atingiu o tempo limite.
HOST_E_NOT_OWNER O chamador não possui o bloqueio.
HOST_E_ABANDONED Um evento foi cancelado enquanto um thread ou fibra bloqueado estava esperando por ele.
E_FAIL Ocorreu uma falha catastrófica desconhecida. Quando um método retorna E_FAIL, o CLR não é mais utilizável dentro do processo. Chamadas subsequentes para métodos de hospedagem retornam HOST_E_CLRNOTAVAILABLE.

Observações

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

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

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

  3. O runtime chama IHostTask::SetCLRTask para associar a nova instância à tarefa de 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 ICLRTask instância de sua instância IHostTask associada. Se desejado, o host também pode armazenar em cache a IHostTask instância para reutilização. Na etapa 1 acima, o runtime extrai um reciclado ICLRTask 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 IHostTask instâncias, ele destrói o correspondente ICLRTask chamando ExitTask.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: MSCorEE.h

Biblioteca: Incluído como um recurso no MSCorEE.dll

Versões do .NET Framework: Disponível desde 2.0

Consulte também