CallbackBehaviorAttribute.ConcurrencyMode 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取或设置一个值,该值指示服务是支持单线程、多线程还是支持可重入调用。
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 值之一,默认值为 Single。
例外
该值不是 ConcurrencyMode 值之一。
注解
此属性指示回调对象的实例是支持单线程,还是支持可同时执行的多线程;如果是单线程,是否支持可重入。
将 ConcurrencyMode 设置为 Single,可以指示系统将服务实例限制为一次只运行一个执行线程,如此一来,您就不必处理线程问题。 这是默认值。 如果值为 Multiple,则意味着在任一时刻都可以通过多个线程来执行服务对象。 在此情况下,必须确保线程安全和状态一致。
Reentrant 同时限制对单个线程的访问。 但是,它会使来自执行服务方法的调用可以返回并重入该执行服务。 可重入调用可以在其他托管线程上执行,但是在此情况下,就会在可重入调用的持续时间内阻止原始线程。
通常,如果到达的消息与实例的并发模式冲突,则该消息会等待,直到可使用实例或超时为止。
此外,如果 ConcurrencyMode 设置为 Single 且可重入调用已在等待释放实例时被阻止,则系统会检测到死锁,并引发异常。
有关并发的详细信息,请参阅ServiceBehaviorAttribute.ConcurrencyMode和会话、实例化和并发。