取消由Web服务管理的长任务

时间:2011-07-08 09:18:35

标签: asp.net silverlight-4.0 c#-4.0 azure asmx

我有一个包含三种方法的网络服务:StartReport(...)IsReportFinished(...)GetReport(...),每种方法都有各种参数。我还有一个客户端应用程序(Silverlight),它将首先调用StartReport来触发报告的生成,然后它将使用IsReportFinished轮询服务器以查看它是否已完成,一旦完成,它将调用GetReport来获取报告。很简单......
StartReport很简单。它首先生成一个唯一的ID,然后它将使用System.Threading.Tasks.Task.Factory.StartNew()创建一个新任务,该任务将生成报告,并在任务继续在后台运行时最终返回唯一ID。 IsReportFinished将只检查系统中的唯一ID以查看报告是否已完成。完成后,可以使用唯一ID来检索报告。

但是我需要一种方法来取消任务,这是通过向IsReportFinished添加一个新参数来实现的。使用cancel==true进行调用时,它将再次检查报告是否已完成。如果报告完成,则无需取消。否则,它需要取消任务 如何取消此任务?

1 个答案:

答案 0 :(得分:1)

您可以使用取消令牌cancel TPL tasks。这是another example