Partilhar via


Método ICLRTask::Reset

Informa o runtime de idioma comum (CLR) de que o anfitrião 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, if the runtime should reset all thread-related static values in addition to the security and locale information related to the current ICLRTask instance; otherwise, false.

Se o valor for true, o runtime repõe os dados armazenados com AllocateDataSlot ou AllocateNamedDataSlot.

Devolver Valor

HRESULT Description
S_OK Reset devolvido com êxito.
HOST_E_CLRNOTAVAILABLE O CLR não foi carregado para um processo ou o CLR está num estado em que não pode executar código gerido ou processar a chamada. com êxito
HOST_E_TIMEOUT A chamada excedeu o limite de tempo.
HOST_E_NOT_OWNER O autor da chamada não é o proprietário do bloqueio.
HOST_E_ABANDONED Um evento foi cancelado enquanto um thread ou fibra bloqueado estava à espera do mesmo.
E_FAIL Ocorreu uma falha catastrófica desconhecida. Quando um método devolve E_FAIL, o CLR já não é utilizável no processo. As chamadas subsequentes para métodos de alojamento devolvem HOST_E_CLRNOTAVAILABLE.

Observações

O CLR pode reciclar instâncias criadas ICLRTask anteriormente para evitar a sobrecarga da criação repetida de novas instâncias sempre que precisar de uma nova tarefa. O anfitrião ativa esta funcionalidade ao chamar ICLRTask::Reset em vez de ICLRTask::ExitTask quando tiver concluído 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 IHostTaskManager::GetCurrentTask para obter uma referência à tarefa de anfitrião atual.

  3. O runtime chama IHostTask::SetCLRTask para associar a nova instância à tarefa de anfitrião.

  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 anfitrião chama Reset para repor a tarefa para um estado limpo e, em seguida, desassocia a ICLRTask instância da instância do IHostTask associada. Se desejar, o anfitrião também pode colocar a IHostTask instância em cache para reutilização. No passo 1 acima, o runtime solicita uma reciclagem 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 trabalho reutilizáveis. Quando o anfitrião destrói uma das instâncias IHostTask , destrói o correspondente ICLRTask ao chamar ExitTask.

Requisitos

Plataformas: Veja Requisitos do Sistema.

Cabeçalho: MSCorEE.h

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

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

Ver também