Поток работает на веб-странице - PullRequest
1 голос
/ 06 октября 2010

Если я захожу на веб-страницу asp.net, на которой указано следующее при загрузке страницы, как долго будет продолжать работать поток после закрытия браузера? Я предположил бы, что это только закончится само по себе, но я не уверен, закончится ли это, когда сессия заканчивается, или что-то в этом роде.

protected void Page_Load(object sender, EventArgs e) {
    Thread T = new Thread(new ThreadStart(longRunningMethod));
    T.Start();
}

Спасибо.

Ответы [ 2 ]

3 голосов
/ 06 октября 2010

Поток будет остановлен, когда код в потоке прекратится, т.е. когда longRunningMethod() завершится.

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

Если каждое посещение определенной веб-страницы приводило к запуску отдельного потока на сервере, причем поток, возможно, будет работать вечно, в конечном итоге достаточно этих посещений поставит сервер приложений на колени.

2 голосов
/ 06 октября 2010

Можно использовать для более коротких задач. У меня есть система отчетов, которая делает это так, что, хотя пользователь быстро получает первую часть отчета, статистика может быть сгенерирована отдельно, чтобы они были готовы к тому времени, когда клиент доберется до них. Для процессов, работающих дольше (в моем случае дольше 30 с), вы захотите использовать какой-то сервис и добавить свою задачу в очередь.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...