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 值之一。

注解

此属性指示回调对象的实例是支持单线程,还是支持可同时执行的多线程;如果是单线程,是否支持可重入。

ConcurrencyMode 设置为 Single,可以指示系统将服务实例限制为一次只运行一个执行线程,如此一来,您就不必处理线程问题。 这是默认值。 如果值为 Multiple,则意味着在任一时刻都可以通过多个线程来执行服务对象。 在此情况下,必须确保线程安全和状态一致。

Reentrant 同时限制对单个线程的访问。 但是,它会使来自执行服务方法的调用可以返回并重入该执行服务。 可重入调用可以在其他托管线程上执行,但是在此情况下,就会在可重入调用的持续时间内阻止原始线程。

通常,如果到达的消息与实例的并发模式冲突,则该消息会等待,直到可使用实例或超时为止。

此外,如果 ConcurrencyMode 设置为 Single 且可重入调用已在等待释放实例时被阻止,则系统会检测到死锁,并引发异常。

有关并发的详细信息,请参阅ServiceBehaviorAttribute.ConcurrencyMode和会话、实例化和并发

适用于