다음을 통해 공유


컨텍스트 간 호출 가로채기

지정된 컨텍스트에서 개체가 활성화되면 컨텍스트 내에서 또는 컨텍스트 내에서 후속 호출이 컨텍스트 경계를 넘어 호출과 다르게 처리됩니다. 컨텍스트 경계를 넘어 호출은 간단한 프록시로 처리됩니다. 이러한 프록시는 호출자를 수용하는 환경에서 호출 수신자를 수용하는 환경으로 런타임 환경을 조정하는 데 필요한 조정을 처리합니다. 이 프로세스를 가로채기라고 합니다.

서로 다른 컨텍스트의 개체에는 런타임 요구 사항이 다르기 때문에 컨텍스트 간 호출 가로채기가 필요합니다. 이것이 바로 컨텍스트의 이유입니다. COM+는 메서드 매개 변수로 전달하는 모든 개체 참조를 가로채서 새 컨텍스트에서 사용할 수 있도록 프록시로 자동으로 변환합니다.

전역 변수와 같은 다른 방법으로 컨텍스트 경계를 넘어 개체 참조를 공유하는 경우 항상 CoMarshalInterfaceCoUnmarshalInterface를 사용해야 합니다. 이러한 함수는 개체 참조를 다른 컨텍스트에서 사용할 수 있는 프록시로 변환할 수 있습니다. 컨텍스트 경계 간에 원시 개체 참조를 공유하지 마세요.

컨텍스트 간 호출 동작은 마샬링할 수 없는 인터페이스를 노출하는 개체의 경우 원치 않는 결과를 초래할 수 있습니다. 이 경우 마샬링할 수 없는 개체는 호출자의 컨텍스트에서만 활성화되고 자체 컨텍스트에서는 활성화되지 않도록 요구할 수 있습니다. 구성 요소 속성 페이지의 활성화 탭에서 호출자의 컨텍스트에서 활성화해야 함 옵션을 선택하여 이 작업을 수행할 수 있습니다. (단계별 지침은 호출자의 컨텍스트에서 활성화 적용 을 참조하세요.)

컨텍스트 활성화