Возможно, вы захотите взглянуть на атрибут [ServiceBehavior] в реализации службы, поскольку он поддерживает аргументы для управления количеством создаваемых экземпляров и используемой моделью потоков.
http://msdn.microsoft.com/en-us/library/cc681240.aspx
Когда у вас есть
[ServiceBehavior(InstanceContextMode = InstanceContextMode.Single,
ConcurrencyMode = ConcurrencyMode.Multiple)]
public class MyService : IMyService
ваша служба будет работать как одиночная, но с несколькими потоками - до порогового значения, установленного в конфигурации WCF, - вызывая ваши методы. Чтобы заставить его работать только в одном потоке и тем самым сериализовать входящих запросов, установите ConcurrencyMode.Single.
В качестве альтернативы, вы можете запустить новый экземпляр вашего сервиса для каждого звонка:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
ConcurrencyMode = ConcurrencyMode.Single)]
public class MyService : IMyService
Экземпляр будет иметь доступ только к одному потоку. Фактически, когда у вас есть InstanceContextMode.PerCall, ConcurrencyMode игнорируется, потому что он всегда «Single», и каждый экземпляр выполняется в своем собственном потоке.