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