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
:
O runtime cria uma nova instância
ICLRTask
.O runtime chama IHostTaskManager::GetCurrentTask para obter uma referência à tarefa do host atual.
O runtime chama IHostTask::SetCLRTask para associar a nova instância à tarefa do host.
A tarefa é executada e concluída.
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