다음을 통해 공유


CallbackBehaviorAttribute.ConcurrencyMode 속성

정의

서비스가 하나의 스레드, 여러 개의 스레드 또는 재진입 호출을 지원할지 여부를 가져오거나 설정합니다.

public:
 property System::ServiceModel::ConcurrencyMode ConcurrencyMode { System::ServiceModel::ConcurrencyMode get(); void set(System::ServiceModel::ConcurrencyMode value); };
public System.ServiceModel.ConcurrencyMode ConcurrencyMode { get; set; }
member this.ConcurrencyMode : System.ServiceModel.ConcurrencyMode with get, set
Public Property ConcurrencyMode As ConcurrencyMode

속성 값

ConcurrencyMode

ConcurrencyMode 값 중 하나입니다. 기본값은 Single입니다.

예외

값이 ConcurrencyMode 값 중 하나가 아닌 경우

설명

이 속성은 콜백 개체의 인스턴스가 동시에 실행되는 스레드 하나 또는 여러 스레드를 지원하는지 여부와 단일 스레드인 경우 재진입이 지원되는지 여부를 나타냅니다.

ConcurrencyModeSingle로 설정하면 시스템은 서비스의 인스턴스를 한 번에 하나의 실행 스레드로 제한하므로, 스레딩 문제를 처리하지 않아도 됩니다. 기본값입니다. 값이 Multiple이면 언제든지 한 번에 여러 스레드가 서비스 개체를 실행할 수 있습니다. 이 경우 스레드 안전성 및 상태 일관성을 확인해야 합니다.

Reentrant 또한 한 번에 단일 스레드에 대한 액세스를 제한합니다. 그러나 실행 중인 서비스 메서드에서 호출하여 실행 중인 서비스를 반환하고 다시 입력할 수 있습니다. 재진입 호출은 다른 관리되는 스레드에서 실행할 수 있지만, 이 경우 재진입 호출 기간 동안 원래 스레드가 차단됩니다.

일반적으로 인스턴스에 대해 동시성 모드를 위반하는 메시지가 도착할 경우 그 메시지는 인스턴스가 사용 가능해지거나 시간 제한이 초과할 때까지 대기합니다.

또한 ConcurrencyModeSingle로 설정되었으며 인스턴스가 해제될 때까지 기다리는 동안 재진입 호출이 차단되는 경우, 시스템은 교착 상태를 감지하고 예외를 throw합니다.

동시성에 대한 자세한 내용은 세션, Instancing 및 동시성을 참조 ServiceBehaviorAttribute.ConcurrencyMode 하세요.

적용 대상