ASP.NET 2.0 – Agendando Tarefas – Task Scheduler [Parte 1]

26 de julho de 2006 Por portal

ASP.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