CallbackBehaviorAttribute.ConcurrencyMode Propriété

Définition

Obtient ou définit si un service prend en charge un thread, plusieurs threads ou des appels réentrants.

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

Valeur de propriété

ConcurrencyMode

Une des valeurs ConcurrencyMode ; la valeur par défaut est Single.

Exceptions

La valeur ne fait pas partie des valeurs ConcurrencyMode.

Remarques

Cette propriété indique si une instance d'un objet de rappel prend en charge un thread ou plusieurs threads exécutés simultanément et si, en cas d'utilisation monothread, la réentrance est prise en charge.

Le fait d'affecter à ConcurrencyMode la valeur Single permet de demander au système de restreindre les instances du service à un thread d'exécution à la fois, ce qui vous évite d'avoir à gérer des problèmes de thread. Il s’agit de la valeur par défaut. La valeur Multiple signifie que plusieurs threads à la fois peuvent exécuter les objets de service. Dans ce cas, vous devez garantir la sécurité des threads et la cohérence des états.

Reentrant restreint également l’accès à un thread unique à la fois. Toutefois, il permet à des appels externes d'une méthode de service en cours d'exécution de retourner et de réentrer le service en cours d'exécution. Un appel réentrant peut être exécuté sur un thread managé différent mais, dans ce cas, le thread d'origine est bloqué pendant la durée de l'appel réentrant.

En règle générale, si un message est reçu pour une instance qui enfreint son mode d'accès concurrentiel, le message patiente jusqu'à ce que l'instance soit disponible ou expire.

Qui plus est, si ConcurrencyMode a la valeur Single et qu'un appel réentrant est bloqué jusqu'à ce que l'instance soit libérée, le système détecte l'interblocage et lève une exception.

Pour plus d’informations sur la concurrence, voir ServiceBehaviorAttribute.ConcurrencyMode et sessions, instanciation et accès concurrentiel.

S’applique à