Метод ICLRTask::Reset
Информирует среду CLR о выполнении задачи основным приложением и позволяет CLR использовать текущий экземпляр ICLRTask повторно для представления новой задачи.
HRESULT Reset (
[in] BOOL fFull
);
Параметры
fFull
[in] Значение true, если среда выполнения должна сбросить все связанные с потоком статические значения в дополнение к сведениям о безопасности и языковом стандарте, касающимся текущего экземпляра ICLRTask; в противном случае — значение false.Если значение равно true, среда выполнения сбрасывает данные, сохраненные с помощью метода AllocateDataSlot или AllocateNamedDataSlot.
Возвращаемое значение
HRESULT |
Описание |
---|---|
S_OK |
Метод Reset успешно возвратил значение. |
HOST_E_CLRNOTAVAILABLE |
Среда CLR не загружена в процесс или находится в состоянии, в котором ей не удается выполнить управляемый код или успешно обработать вызов. |
HOST_E_TIMEOUT |
Время ожидания вызова истекло. |
HOST_E_NOT_OWNER |
Вызывающий объект не владеет блокировкой. |
HOST_E_ABANDONED |
Событие, которого ожидал заблокированный поток или нить, было отменено. |
E_FAIL |
Произошел неизвестный разрушительный сбой. Если метод вернет значение E_FAIL, среду CLR более нельзя будет использовать в данном процессе. Последующие вызовы методов размещения возвращают значение HOST_E_CLRNOTAVAILABLE. |
Заметки
Среда CLR может повторно утилизировать созданные ранее экземпляры ICLRTask, позволяя избежать излишних затрат, свеянных с многократным созданием новых экземпляров каждый раз, когда возникает необходимость в выполнении новой задачи. Основное приложение включает эту функцию, вызвав после завершения задачи вместо метода ICLRTask::ExitTask метод ICLRTask::Reset. В следующем списке подытожен обычный жизненный цикл экземпляра ICLRTask.
Среда выполнения создает новый экземпляр ICLRTask.
Среда выполнения вызывает метод IHostTaskManager::GetCurrentTask для получения ссылки на текущую задачу основного приложения.
Среда выполнения вызывает метод IHostTask::SetCLRTask, чтобы связать новый экземпляр с задачей основного приложения.
Задача выполняет и завершается.
Основное приложение удаляет задачу, вызвав метод ICLRTask::ExitTask.
Метод Reset меняет этот сценарий следующим образом. На указанном выше этапе 5 основное приложение вызывает метод Reset для сброса задачи с целью очистки состояния, а затем отсоединяет экземпляр ICLRTask от связанного с ним экземпляра IHostTask. При необходимости основное приложение может также кэшировать экземпляр IHostTask для повторного использования. На приведенном выше этапе 1 среда выполнения извлекает ICLRTask из кэша вместо создания нового экземпляра.
Этот подход удобно использовать, когда у основного приложения есть также пул повторно используемых рабочих задач. При удалении одного из экземпляров IHostTask основное приложение удаляет соответствующий экземпляр ICLRTask, вызвав метод ExitTask.
Требования
Платформы: см. раздел Требования к системе для .NET Framework.
Заголовок: MSCorEE.h
Библиотека: включена как ресурс в MSCorEE.dll
Версии платформы .NET Framework: 4, 3.5 с пакетом обновления 1 (SP1), 3.5, 3.0 с пакетом обновления 1 (SP1), 3.0, 2.0 с пакетом обновления 1 (SP1), 2.0