У меня установлен сервис WCF для PerCall
Я хотел бы знать, как я могу отправить вызов Start от клиента, чтобы запустить длительный процесс, и отправить команду Cancel, чтобы отменить его.
Моя служба WCF выглядит примерно так
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
public class Service1 : IService1
{
CancellationTokenSource cancelToken = new CancellationTokenSource();
public void Start()
{
var compute = Task.Factory.StartNew(StartLongRunningTask, cancelToken.Token);
}
public void Stop()
{
cancelToken.Cancel();
}
private void StartLongRunningTask()
{
//process here
}
}
Я предполагаю, что проблема здесь в том, что каждый раз, когда на сервер поступает вызов, он обрабатывается как новый запрос.
Итак, как следует запускать и отменять длительную задачу в WCF?
РЕДАКТИРОВАТЬ: я размещаю его как службу Windows