我遇到以下情况。我有一个ASP NET
应用程序,我想响应2
路径:
/run
-长期运行的任务/abort
我会遇到一种情况,client1
经过/run
(开始任务),几分钟后client2
将经过/abort
,并取消{ task
中的{1}}。
这可能吗?
答案 0 :(得分:1)
这可能吗?
是的,以一种非常幼稚的方式,您的Controller代码看起来像:
private static CancellationTokenSource Source {get;set;}
public void Run()
{
try{
Source = new CancellationTokenSource();
DoLongJob(Source.Token);
}
catch
{
Source = null;
}
}
public void Abort()
{
if(Source!=null) Source.Cancel();
Source = null;
}
您将沿着DoLongJob
方法和子调用的调用链传递CancellationToken。在代码的不同点,您将调用token.ThrowIfCAncellationResquested()
当然,这是非常基本的。它将只能同时使用一个Web服务器和一个任务。