System.ServiceModel 4.0.0.0 System.Enum

is used in conjunction with the property to specify whether a service class supports single-threaded or multi-threaded modes of operation. A single-threaded operation can be either reentrant or non-reentrant.

The following table shows when indigo1 permits an operation to be invoked while another one is in progress, depending upon the .

ConcurrencyMode Value

Can a new operation be invoked?

Never.

Only while invoking another service or a callback.

Always.

Specifies whether a service class supports single-threaded or multi-threaded modes of operation.

- Field
  4.0.0.0
  System.ServiceModel.ConcurrencyMode

  The service instance is multi-threaded. No synchronization guarantees are made. Because other threads can change your service object at any time, you must handle synchronization and state consistency at all times.

- Field
  4.0.0.0
  System.ServiceModel.ConcurrencyMode

  The service instance is single-threaded and accepts reentrant calls. The reentrant service accepts calls when you call another service; it is therefore your responsibility to leave your object state consistent before callouts and you must confirm that operation-local data is valid after callouts. Note that the service instance is unlocked only by calling another service over a indigo2 channel. In this case, the called service can reenter the first service via a callback. If the first service is not reentrant, the sequence of calls results in a deadlock. For details, see .

- Field
  4.0.0.0
  System.ServiceModel.ConcurrencyMode

  The service instance is single-threaded and does not accept reentrant calls. If the property is , and additional messages arrive while the instance services a call, these messages must wait until the service is available or until the messages time out.