Отмените длинную задачу, которой управляет веб-сервис - PullRequest
0 голосов
/ 08 июля 2011

У меня есть веб-сервис с тремя методами: StartReport(...), IsReportFinished(...) и GetReport(...), каждый с различными параметрами.У меня также есть клиентское приложение (Silverlight), которое сначала вызывает StartReport, чтобы инициировать генерацию отчета, а затем опрашивает сервер с помощью IsReportFinished, чтобы увидеть, выполнено ли это, и когда оно выполнено, оно вызывает GetReport для получения отчета.Очень просто ...
StartReport прост.Сначала он генерирует уникальный идентификатор, затем он использует System.Threading.Tasks.Task.Factory.StartNew() для создания новой задачи, которая сгенерирует отчет и, наконец, вернет уникальный идентификатор, в то время как задача продолжает выполняться в фоновом режиме.IsReportFinished просто проверит систему на наличие уникального идентификатора, чтобы увидеть, готов ли отчет.После этого уникальный идентификатор можно использовать для получения отчета.

Но мне нужен способ отменить задачу, которая реализуется путем добавления нового параметра в IsReportFinished.При вызове с cancel==true он снова проверит, готов ли отчет.Если отчет закончен, отменить нечего.В противном случае необходимо отменить задачу.
Как мне отменить эту задачу?

1 Ответ

1 голос
/ 14 июля 2011

Вы можете использовать токен отмены для отмены задач TPL .А вот другой пример .

...