Se você está fazendo ASP.NET, com certeza vai usar IIS
Se você quiser adicionar uma tarefa agendada à sua aplicação de ASP.net, deve usar um thread para fazer os cálculos agendados sem parar
Então, digamos que adicionamos Quartz.NET framework à nossa aplicação ASP.Net, e a configuração e assim por diante estejam ok.
Este site tem pouquíssimas visitas, e agora só algumas pessoas o usam quando estão no trabalho, mas no dia seguinte fui lá e vi que as threads e tarefas de cálculo do agendamento em segundo plano foram interrompidas, e se você pegar Application_End evento, verá que esse evento foi realmente chamado.
Então deve haver algo errado com o mecanismo de reciclagem de pool de aplicações do IIS. Porque a configuração padrão do IIS é que, se o pool de aplicações de um site não for acessado ou solicitado por um período de tempo, o IIS automaticamente recuperará o pool de programas e encerrará o processo. Os fios nesse processo definitivamente não vão sobreviver.
No entanto, podemos definir os parâmetros do pool de aplicações para que eles não sejam simplesmente reciclados automaticamente (algumas situações são inevitáveis, como sites com implantação rápida, número excessivo de erros, etc.)
Encontre o pool de programas usado por este site no IIS e clique em "Configurações avançadas..."
Mude as seguintes configurações na lista que se abre:
Recuperação - Intervalo de tempo fixo (minutos) alterado para 0
- Limite de memória virtual/dedicada (KB) alterado para 0
Modelo de processo - O tempo limite de inatividade (minutos) é alterado para 0
Dessa forma, o pool de programas não será reciclado automaticamente, e algumas threads simples de computação em segundo plano funcionarão normalmente |