ASP.NET 2.0 – Agendando Tarefas – Task Scheduler [Parte 1]
26 de julho de 2006ASP.NET 2.0 – System.Web.Caching.Cache
Estou desenvolvendo um novo projeto em asp.net 2.0 e esse projeto tem uma rotina que de tempos em tempos precisar executar algumas tarefas. Como vocês sabem o ASP.NET é um ciclo de vida.Quando a pagina termina de ser executada você perde o controle da sua aplicação.
Dentro do Global.asax você tem alguns eventos que podem ser úteis nesse tipo de situação como ou Session Start / End para você fazer algum procedimento.
Porém para esse problema especifico eu preciso fazer um agendamento para acontecer
Estou desenvolvendo um novo projeto em asp.net 2.0 e esse projeto tem uma rotina que de tempos em tempos precisar executar algumas tarefas. Como vocês sabem o ASP.NET é um ciclo de vida.Quando a pagina termina de ser executada você perde o controle da sua aplicação.
Dentro do Global.asax você tem alguns eventos que podem ser úteis nesse tipo de situação como ou Session Start / End para você fazer algum procedimento.
Porém para esse problema especifico eu preciso fazer um agendamento para acontecer
Estou desenvolvendo um novo projeto em asp.net 2.0 e esse projeto tem uma rotina que de tempos em tempos precisar executar algumas tarefas. Como vocês sabem o ASP.NET é um ciclo de vida.Quando a pagina termina de ser executada você perde o controle da sua aplicação.
Dentro do Global.asax você tem alguns eventos que podem ser úteis nesse tipo de situação como ou Session Start / End para você fazer algum procedimento.
Porém para esse problema especifico eu preciso fazer um agendamento para acontecer
De hora em hora independe de ter um usuário visitando meu site o que motivaria aqueles eventos.
Então com objetivo de criar um alternativa que consuma o mínimo de recurso, por exemplo sem precisar ter um thread 100% rodando estou usando o cache do asp.net como meu timer do agendamento.
Estou adicionando um item ao cachê que é o meu agendamento e definindo uma data para expirar. Associado a esse cachê estou vinculando um evento que será disparado
Toda vez que o cachê expirar. Será nesse momento que meu código entrara em execução.
O Cachê possui uma classe chamada System.Web.Caching.CacheItemRemovedCallback que dispara para você toda vez que o cachê adicionado expirou.
Então se você adicionar um cachê e vincular a um método via CallBack você será notificado e poderá tomar sua ação.
public void CacheItemRemovedCallback(string key,object value,System.Web.Caching.CacheItemRemovedReason reason)
{
/// aqui
}
Estou realizando testes de peformace e estou tendo bons resultados, posteriormente publicarei mais detalhes.
[],
Ramon Durães