Интерфейс ICLRTask

Предоставляет методы, позволяющие ведущему приложению выполнять запросы среды CLR или уведомлять среду CLR о связанной задаче.

Методы

Метод Описание
Метод Abort Запрашивает, чтобы среда CLR прервала задачу, представленную текущим ICLRTask экземпляром.
Метод ExitTask Уведомляет среду CLR о завершении задачи, связанной с текущим ICLRTask экземпляром, и пытается корректно завершить задачу.
Метод GetMemStats Получает статистические сведения об использовании ресурсов памяти задачей, представленной текущим ICLRTask экземпляром.
Метод LocksHeld Возвращает количество блокировок, удерживаемых в данный момент в задаче.
Метод NeedsPriorityScheduling Возвращает значение, указывающее, должен ли узел назначать высокий приоритет для перепланирования задачи, представленной текущим ICLRTask экземпляром.
Метод Reset Сообщает среде CLR о том, что узел завершил задачу, и позволяет среде CLR повторно использовать текущий ICLRTask экземпляр для представления другой задачи.
Метод RudeAbort Вызывает немедленное прерывание среды CLR задачи, представленной текущим ICLRTask экземпляром, без гарантии выполнения методов завершения.
Метод SetTaskIdentifier Задает уникальный идентификатор задачи, представленной текущим ICLRTask экземпляром, для использования в отладке.
Метод SwitchIn Уведомляет среду CLR о том, что задача, представленная текущим ICLRTask экземпляром, находится в работоспособном состоянии.
Метод SwitchOut Уведомляет среду CLR о том, что задача, представленная текущим ICLRTask экземпляром, больше не находится в работоспособном состоянии.
Метод YieldTask Запрашивает, чтобы среда CLR была доступна для других задач. Среда CLR не гарантирует, что задача будет помещена в состояние, в котором она может дать время обработки.

Комментарии

ICLRTask это представление задачи для среды CLR. В любой момент выполнения кода задачу можно описать как выполняющуюся или ожидающую выполнения. Узел вызывает ICLRTask::SwitchIn метод , чтобы уведомить среду CLR о том, что задача, представленная текущим ICLRTask экземпляром, теперь находится в работоспособном состоянии. После вызова ICLRTask::SwitchInузел может запланировать задачу в любом потоке операционной системы, за исключением случаев, когда среде выполнения требуется сопоставление потоков, как указано в вызовах методов IHostTaskManager::BeginThreadAffinity и IHostTaskManager::EndThreadAffinity . Через некоторое время операционная система может решить удалить задачу из потока и поместить ее в нерабочем состоянии. Например, это может произойти всякий раз, когда задача блокирует примитивы синхронизации или ожидает завершения операций ввода-вывода. Узел вызывает SwitchOut , чтобы уведомить среду CLR о том, что задача, представленная текущим ICLRTask экземпляром, больше не находится в работоспособном состоянии.

Задача обычно завершается в конце выполнения кода. В это время узел вызывает ICLRTask::ExitTask , чтобы уничтожить связанный ICLRTaskобъект . Однако задачи также можно перезаработать с помощью вызова ICLRTask::Reset, который позволяет ICLRTask повторно использовать экземпляр . Такой подход предотвращает многократное создание и уничтожение экземпляров.

Требования

Платформы: см. раздел Требования к системе.

Заголовка: MSCorEE.h

Библиотека: Включается в качестве ресурса в MSCorEE.dll

версии платформа .NET Framework: доступно с версии 2.0.

См. также раздел