Partilhar via


Método ICLRTask::Reset

Informa o common language runtime (CLR) de que o host completou uma tarefa e permite ao CLR reutilizar a instância atual do ICLRTask para representar outra tarefa.

Sintaxe

HRESULT Reset (
    [in] BOOL fFull
);

Parâmetros

fFull [em] true, se o tempo de execução reiniciar todos os valores estáticos relacionados com a thread, além da informação de segurança e localização da instância atual ICLRTask ; caso contrário, false.

Se o valor for true, o tempo de execução reinicia dados que foram armazenados usando AllocateDataSlot ou AllocateNamedDataSlot.

Valor de retorno

HRESULT Descrição
S_OK Reset regressou com sucesso.
HOST_E_CLRNOTAVAILABLE O CLR não foi carregado num processo, ou o CLR está num estado em que não pode executar código gerido nem processar a chamada. Com sucesso
HOST_E_TIMEOUT A chamada expirou.
HOST_E_NOT_OWNER O chamador não é dono da fechadura.
HOST_E_ABANDONED Um evento foi cancelado enquanto um fio ou fibra bloqueada estava à espera.
E_FAIL Ocorreu uma falha catastrófica desconhecida. Quando um método retorna E_FAIL, o CLR deixa de ser utilizado dentro do processo. As chamadas subsequentes para sistemas de alojamento regressam HOST_E_CLRNOTAVAILABLE.

Observações

O CLR pode reciclar instâncias previamente criadas ICLRTask para evitar a sobrecarga de criar repetidamente novas instâncias sempre que precisa de uma nova tarefa. O anfitrião ativa esta funcionalidade chamando ICLRTask::Reset em vez de ICLRTask::ExitTask quando termina uma tarefa. A lista seguinte resume o ciclo de vida normal de uma ICLRTask instância:

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

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

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

  4. A tarefa é executada e concluída.

  5. O anfitrião destrói a tarefa ao chamar ICLRTask::ExitTask.

Reset altera este cenário de duas formas. No passo 5 acima, o host chama Reset para reiniciar a tarefa para um estado limpo e depois desacopla a ICLRTask instância da sua instância associada IHostTask . Se desejar, o anfitrião também pode armazenar a IHostTask instância em cache para reutilização. No passo 1 acima, o runtime retira um reciclado ICLRTask da cache em vez de criar uma nova instância.

Esta abordagem funciona bem quando o anfitrião também tem um conjunto de tarefas de trabalhadores reutilizáveis. Quando o hospedeiro destrói uma das suas IHostTask instâncias, destrói a correspondente ICLRTask ao chamar ExitTask.

Requisitos

Plataformas: Consulte Requisitos do sistema.

Cabeçalho: MSCorEE.h

Biblioteca: Incluído como recurso em MSCorEE.dll

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

Consulte também