Как обеспечить конец фоновой резьбы, когда заканчивается приложение?

StackOverflow https://stackoverflow.com/questions/3464548

Вопрос

У меня есть приложение ASP.NET с фоновой нитью. Нить запускается, когда приложение запускается, и он изящно остановлен, когда приложение заканчивается. Я использую веб-сайт на общий хост. К сожалению, иногда приложение не вызывает событие Application_end, когда он заканчивается. Я бы подумал, что темы будут убиты в любом случае, но это не так. В настоящее время у меня есть 4 потока, работающие на заднем плане. Три из предыдущих времен приложение началось и 1 из текущего сеанса приложений. Как я могу убедиться, что потоки выключены, когда приложение заканчивается? Есть ли путь для потоков, чтобы проверить, было ли приложение сбрасывается или имел был сброшен? Или есть ли способ проверить эти мошеннические потоки при запусках приложения и убить их? Заранее спасибо.

Это было полезно?

Решение

Используйте ThreadPool.QueueUserWorkeTem (), чтобы выполнить свой код в фоновом режиме, который будет закончен при разгрузке Appdomain. Я предполагаю, что вы используете PackageWorker, в соответствии с тегами, и я бы предложил попробовать это вместо этого. (Рассмотрите возможность добавления примерного кода для вытягивания лучших ответов.)

Управляемый Threadpool: http://msdn.microsoft.com/en-us/library/0ka9477y.aspx.

Передний план / фоновые резьбы: http://msdn.microsoft.com/en-us/library/h339syd0.aspx.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top