我有一个WCF服务,设置为PerCall。
我想知道如何从客户端发送“启动”调用以启动长时间运行的过程,并发送“取消”命令以取消它。
我的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服务托管。