PerCall に設定された WCF サービスがあります
クライアントから 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サービスとしてホストしています