Поделиться через


Метод 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.

  1. Среда выполнения создает новый экземпляр ICLRTask.

  2. Среда выполнения вызывает метод IHostTaskManager::GetCurrentTask для получения ссылки на текущую задачу основного приложения.

  3. Среда выполнения вызывает метод IHostTask::SetCLRTask, чтобы связать новый экземпляр с задачей основного приложения.

  4. Задача выполняет и завершается.

  5. Основное приложение удаляет задачу, вызвав метод 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

См. также

Ссылки

Интерфейс ICLRTask

Интерфейс ICLRTaskManager

Интерфейс IHostTask

Интерфейс IHostTaskManager