다음을 통해 공유


CallContext 사용

호출 컨텍스트에서는 실행 코드 경로와 함께 포함되는 여러 속성을 제공합니다. CallContext 클래스에서 실행 코드 경로를 이동 및 백업할 때는 해당 클래스의 인스턴스에 항목을 추가할 수 있습니다.

CallContext 개체는 컨텍스트 및 응용 프로그램 도메인 간에 이동할 때 형식이 LogicalCallContext인 "__CallContext" 항목의 IMessage에 전달됩니다. 메시지 싱크는 메시지 싱크 체인을 통과할 때 __CallContext에서 항목을 추가하고 찾을 수 있습니다.

호출 컨텍스트는 응용 프로그램 도메인 경계에서 복제됩니다. ILogicalThreadAffinative 인터페이스를 노출하는 개체는 응용 프로그램 도메인 외부로 전파되고 수신자의 스레드에 추가됩니다. 이 인터페이스를 지원하지 않는 개체는 응용 프로그램 도메인 외부로 전파되지 않습니다.

CallContext에서는 호출 경로를 위한 데이터 슬롯을 제공합니다. CallContext.SetDataCallContext.GetData는 응용 프로그램 코드에서 호출 컨텍스트 슬롯을 관리하는 데 사용할 수 있습니다. 데이터 슬롯은 호출 경로마다 고유합니다. 즉, 호출 경로 간에 해당 상태가 공유되지 않습니다. 슬롯에는 이름이 지정되며 이 이름은 데이터 슬롯에 액세스하는 데 사용됩니다. 슬롯은 이름을 사용하여 명시적으로 해제할 수 있습니다.

CallContext를 사용하는 원격 서비스 예는 원격 서비스 예: CallContext를 참조하십시오.

비동기 및 CallContext

BeginInvoke 메서드는 CallContext를 서버에 전달합니다. EndInvoke 메서드가 호출되면 CallContext는 다시 스레드에 병합됩니다. 여기에는 BeginInvokeEndInvoke가 순차적으로 호출되는 경우와 BeginInvoke는 하나의 스레드에서 호출되고 EndInvoke는 콜백 함수에서 호출되는 경우가 포함됩니다.

CallContext 항목이 현재 스레드의 CallContextEndInvoke에서 제공하는 CallContext 모두에 공통되면 EndInvoke의 항목이 스레드에 있는 CallContext의 항목에 우선합니다.

컨텍스트 관련 정적 필드

컨텍스트 관련 정적 필드에서는 컨텍스트와 관련된 필드를 제공합니다. 특정 컨텍스트에서 정적 필드에 액세스할 때마다 해당 값이 해당 컨텍스트와 관련되며 해당 필드는 컨텍스트 간에 공유되지 않습니다. 정적 필드를 다른 컨텍스트에서 액세스하면 해당 필드에는 다른 값이 들어가게 됩니다.

컨텍스트 관련 정적 필드를 사용하려면 ContextStaticAttribute 특성을 ContextBoundObject 개체의 필드에 적용하기만 하면 됩니다.

참고 항목

참조

CallContext

개념

원격 서비스 예: CallContext

기타 리소스

CallContext 및 직접 원격 서비스
고급 원격 서비스