다음을 통해 공유


ICLRTask::Reset 메서드

호스트가 작업을 완료했음을 CLR(공용 언어 런타임)에 알리고 CLR에서 현재 ICLRTask 인스턴스를 다시 사용하여 다른 작업을 나타낼 수 있도록 합니다.

HRESULT Reset (
    [in] BOOL fFull
);

매개 변수

  • fFull
    [in] 런타임에서 현재 ICLRTask 인스턴스와 관련된 보안/로캘 정보 및 스레드와 관련된 모든 정적 값을 다시 설정해야 할 경우 true이고, 그렇지 않으면 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을 호출하여 작업을 처음처럼 정리된 상태로 다시 설정한 다음 관련된 IHostTask 인스턴스에서 ICLRTask 인스턴스를 복제합니다. 필요한 경우에는 호스트에서 다시 사용할 수 있도록 IHostTask 인스턴스를 캐시할 수도 있습니다. 위의 1단계에서 공용 언어 런타임은 새 인스턴스를 만드는 대신 재활용된 ICLRTask를 캐시에서 가져옵니다.

이 방법은 호스트에 재사용 가능한 작업자 작업 풀도 있는 경우 유용합니다. 호스트는 IHostTask 인스턴스 중 하나를 소멸시킬 때 ExitTask를 호출하여 해당하는 ICLRTask를 소멸시킵니다.

요구 사항

플랫폼: .NET Framework 시스템 요구 사항 참조

헤더: MSCorEE.h

라이브러리: MSCorEE.dll에 리소스로 포함됨

.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

참고 항목

참조

ICLRTask 인터페이스

ICLRTaskManager 인터페이스

IHostTask 인터페이스

IHostTaskManager 인터페이스