Пользовательский поток запущен в Application_Start - PullRequest
3 голосов
/ 08 сентября 2010

Мне приходится иметь дело с устаревшим приложением ASP.NET, написанным на .NET Framework 1.1.При проверке кода приложения я обнаружил интересную часть.Приложение запускает пользовательский поток в обработчике события Application_Start (Global.asax).Этот поток должен работать всю жизнь приложения.

Давным-давно я читал, что это никогда не должно использоваться, но я не помню, почему.Какие проблемы связаны с таким дизайном приложения?Можно ли запустить поток снова, когда он падает?Будет ли сбой регистрироваться где-то автоматически (журнал событий)?Может ли среда выполнения ASP.NET уничтожить поток по какой-либо причине?

В данный момент меня не интересует утилизация AppPool.Он перезапускает приложение, все сеансы и создает новый поток.

1 Ответ

2 голосов
/ 08 сентября 2010

Основная проблема заключается в том, что поток может быть прерван в любое время ASP.NET.Если поток работает все время, вероятно, есть некоторая работа, которую он должен выполнить, и прекращение работы может не радовать ваше приложение при следующем запуске.

Современные решения включают использование асинхронных страниц ив пуле потоков.

Если вы решите обновить, помните, что в .NET 1.1, потоки, генерирующие исключение верхнего уровня, просто завершаются;в .NET 2.0 потоки, генерирующие исключение верхнего уровня, вылетают .При обновлении, вероятно, было бы лучше перейти к асинхронным страницам, а не сохранять отдельный поток.

...