ICLRTask::Reset 메서드
호스트가 작업을 완료했음을 CLR(공용 언어 런타임)에 알리고 CLR이 현재 ICLRTask 인스턴스를 다시 사용하여 다른 작업을 나타낼 수 있도록 합니다.
구문
HRESULT Reset (
[in] BOOL fFull
);
매개 변수
fFull
[in] 런타임이 현재 ICLRTask
인스턴스와 관련된 보안 및 로캘 정보 외에 모든 스레드 관련 정적 값을 다시 설정해야 하는 경우 true
입니다. 그렇지 않으면 false
입니다.
값이 true
이면 런타임은 AllocateDataSlot 또는 AllocateNamedDataSlot을 사용하여 저장된 데이터를 다시 설정합니다.
Return Value
HRESULT | 설명 |
---|---|
S_OK | Reset 가 성공적으로 반환되었습니다. |
HOST_E_CLRNOTAVAILABLE | CLR이 프로세스에 로드되지 않았거나 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
을 호출하여 작업을 정리 상태로 다시 설정한 다음, 연결된 IHostTask 인스턴스에서 ICLRTask
인스턴스를 분리합니다. 원하는 경우 호스트는 다시 사용하기 위해 IHostTask
인스턴스를 캐시할 수도 있습니다. 위의 1단계에서 런타임은 새 인스턴스를 만드는 대신 캐시에서 재활용된 ICLRTask
리소스를 풀합니다.
이 접근 방식은 호스트에 재사용 가능한 작업자 작업 풀이 있는 경우 잘 작동합니다. 호스트는 해당 IHostTask
인스턴스 중 하나를 삭제할 때 ExitTask
를 호출하여 해당 ICLRTask
인스턴스를 삭제합니다.
요구 사항
플랫폼:시스템 요구 사항을 참조하세요.
헤더: MSCorEE.h
라이브러리: 리소스로 MSCorEE.dll에 포함됩니다.
.NET Framework 버전: 2.0부터 사용 가능
참고 항목
.NET