Cancel a long task that's managed by a web service
I have a web service with three methods: StartReport(...)
, IsReportFinished(...)
and GetReport(...)
, each with various parameters. I also have a client application (Silverli开发者_如何学运维ght) which will first call StartReport to trigger the generation of the report, then it will poll the server with IsReportFinished to see if it's done and once done, it calls GetReport to get the report. Very simple...
System.Threading.Tasks.Task.Factory.StartNew()
to create a new task that will generate the report and finally return the unique ID while the task continues to run in the background. IsReportFinished will just check the system for the unique ID to see if the report is done. Once done, the unique ID can be used to retrieve the report.
But I need a way to cancel the task, which is implemented by adding a new parameter to IsReportFinished. When called with cancel==true
it will again check if the report is done. If the report is finished, there's nothing to cancel. Otherwise, it needs to cancel the task.
You could use a cancellation token to cancel TPL tasks. And here's another example.
精彩评论