Как сохранить задачи веб-сайтов после закрытия веб-сайта

#c# #multithreading

#c# #многопоточность

Вопрос:

Я пишу приложение для Интернета, но проблема в том, что выполнение задачи может занять много времени (минуты или часы). В течение этого времени я предполагаю, что веб-сайт выйдет из строя или аналогично.

Предположим, пользователь может нажать кнопку «Пуск», и выполняются различные процессы. Мой вопрос заключается в том, чтобы поддерживать процесс (задачу) в рабочем состоянии, даже если они покидают веб-сайт, без настройки IIS (если это возможно).

Просто, если я создам новый поток для выполнения длительной фоновой задачи, будет ли эта фоновая задача по-прежнему принадлежать приложению (веб-сайту), и если я закрою приложение (веб-сайт), оно будет автоматически прервано или оно продолжится?

Я думаю, что лучшим способом было бы, чтобы код запускал процесс на сервере (другое приложение), но я больше заинтересован в понимании того, как работает поток.

Комментарии:

1. Любой рабочий процесс может завершиться в любое время. Поиск «ASP.NET фоновая работа». Очень сложно.

2. Проверьте интерфейс IRegisteredObject и как настроить с его помощью задачи с длительным сроком службы

Ответ №1:

Для этого запустите этот поток с помощью Ajax. Он будет отправлен асинхронно на сервер, и сервер может работать с ним, пока не завершит задачу.

После отправки запроса на сервер браузер не должен быть активным. Сервер должен выполнять всю работу, а браузер нужен только для отображения результата запроса. После того, как пользователь отправит запрос, ему не требуется оставаться там. Он может уйти, и сервер продолжит свою работу.

Пользователь может перемещаться с веб-сайта, и ему не нужно оставаться на веб-сайте для завершения процесса. Тогда выполнение задачи будет зависеть от системы.

Комментарии:

1. Спасибо за идею, но, согласно OP, он может быть открыт часами… Не идеально ожидать, что пользователь будет держать браузер открытым, мне интересно, умирает ли поток, когда приложение умирает (несмотря на то, что это новый поток).

2. @MyDaftQuestions, Ajax не зависит от связи между браузером и сервером, после отправки запроса пользователь может закрыть браузер и удалиться.

3. о … вау. Я этого не понимал… Боже мой, тогда это может быть ответом, спасибо

4. Ajax — это клиентская сторона, потоки и обработка — на стороне сервера. Клиентская сторона завершит работу после отправки запроса или отображения ответа. Серверная часть будет выполняться на сервере. Без использования браузера.

5. Это путаница, которая у меня есть. Зачем использовать Ajax, почему бы не использовать Thread t = new Thread(() =>{ //do this }); … таким образом, это происходит на стороне сервера, и, как вы говорите, нет необходимости в браузере (извините, если я медленный). Если это так, то, как только запускается этот новый поток, браузер может закрыться (ajax или поток)