2015-04-23 3 views
1

Я разрабатываю приложение MVC, у которого есть длительная работа, которая обрабатывает учетные записи клиентов. Я хотел бы, чтобы этот процесс мог запускать и забывать, то есть пользователь может нажать «Пуск», а затем выйти из приложения. Это задание будет продолжать обрабатывать учетные записи и отслеживать их прогресс (в приложении или в файле журнала или в базе данных). Затем пользователь может вернуться в систему и увидеть прогресс в любой точке.Продолжить обработку задания после выхода пользователя

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

Будет ли BackgroundWorker обрабатывать запрос после выхода пользователя из системы или завершения процесса после завершения сеанса пользователя?

+4

Создать отдельный исполняемый файл и запустить его в качестве службы, использовать пользовательский интерфейс, чтобы начать службу. BackgroundWorker выйдет, когда приложение закроется. –

+0

Хм, как насчет чего-то вроде [Hangfire] (http://hangfire.io/)? – Pseudonym

+1

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

ответ

2

Я предлагаю использовать ThreadPool.

Если вы хотите быть в состоянии возобновить, вы должны использовать некоторые решения, такие как HangFire

+0

MVC убивается, только когда IIS убивает Application Pool. Не когда пользователь выходит из системы. –

+0

@CzechDeveloper есть способ запустить поток в MVC независимо от пользователя? – Pseudonym

+0

Любая нить, отдельная от «основной» нити, не зависит от пользователя. –