Интерфейс 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.