2014-10-05 2 views
0

Я использую ASP.NET WebForms. В PostBack я создаю задачу (задача очень длинная). На странице html мне нужна кнопка, которая может отменить эту задачу. 1. Я нажимаю кнопку GetResults, которая запускает задачу на сервере 2. После некоторого ожидания я нажимаю кнопку «Отмена», и мне нужно, чтобы задача была отмененаОтмена длительных задач Asp.net

Как это сделать?

ответ

0

Хотя, вы можете сделать это, как правило, не рекомендуется создавать долгосрочную задачу в ASP.NET, особенно если это фоновые задачи.

Фил Хаак имеет большую статью по этому поводу - http://haacked.com/archive/2011/10/16/the-dangers-of-implementing-recurring-background-tasks-in-asp-net.aspx/

Вот еще одна хорошая статья на эту тему - http://blog.stephencleary.com/2012/12/returning-early-from-aspnet-requests.html

Вы можете рассмотреть такие вещи, как сообщение шины для этого. Вы можете также рассмотреть простую таблицу TaskQueue в базе данных, к которой ваше веб-приложение будет вставлять запись, соответствующую вашей задаче, с статусом «Ожидание». Затем вы можете получить фоновый сервис (например, службу Windows), который читает «Ожидающие» задачи и маркирует их как «InProgress» во время обработки и «Завершить», когда это будет сделано. Таким образом, в то время как задача «Ожидание», вы можете заставить пользователя отменить задачу из пользовательского интерфейса, который просто удалит запись «Ожидание» из базы данных.

Другой вариант заключается в использовании такого решения - http://hangfire.io/

Смежные вопросы