У меня есть веб-сайт на C # / ASP.NET на базе IIS 6.0 с серверной частью SQL. Я хочу генерировать некоторые вычислительно дорогие отчеты (сводки, индексы поисковых систем и т. Д.) Во время простоя ЦП. Мне нужно, чтобы отчеты создавались из пула приложений IIS, чтобы он знал правильные параметры конфигурации и (труднее исправить) избегал кошмарных ограничений безопасности, на которые я наложил.
Могу ли я запустить потоки внутри процесса AppPool, которые не будут связывать процессор, чтобы он мог продолжать беспрепятственно обслуживать запросы? Если так, то как? Какой код и библиотеки?
Я полагаю, что это включает ThreadPool и приоритеты потоков, но я не смог найти хорошее покрытие потоков с низким pri и их взаимодействия с веб-сервером IIS и пулом приложений.
[EDIT] http://msdn.microsoft.com/en-us/magazine/cc163854.aspx#S7 обсуждает использование Timer для этого, но прямо не заявляет, что .NET Framework будет гарантировать, что поток Timer имеет низкий приоритет. Это может быть решением, но гарантировано ли это?
[EDIT] Этот парень говорит о важных проблемах, связанных с исключениями: http://flimflan.com/blog/SafelyRunningBackgroundThreadsInASPNET20.aspx
[EDIT] Интересно, что само по себе переполнение стека использует фоновые потоки IIS для моих целей: http://blog.stackoverflow.com/2008/07/easy-background-tasks-in-aspnet/... в комментариях все говорят, что их (больше не используется) методика отстой, но этот в комментариях есть смысл для меня ...