Лично я не стал бы беспокоиться о фоновых потоках в службе WCF. Сервис в любом случае фактически является «фоновым работником». Все, что вам нужно сделать, это убедиться, что любые блокирующие звонки, которые вы делаете внутри службы, не влияют на других клиентов. Вы можете сделать это, изменив режим параллелизма:
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
class MyServiceClass : IMyServiceContract {
public void KillAll() {
new Killbot().KillAllHumans(); // Throws a FaultException
}
}
Когда это установлено, WCF будет вызывать ваши сервисные методы в нескольких потоках, не пытаясь их синхронизировать. Пока вы пишете свой код, помня об этом, вы можете выполнять все блокирующие вызовы, какие хотите.