Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

yslladd

[Resolvido] Ação automatica

Recommended Posts

Boa tarde a todos,

 

Gostaria de saber como faço para minha aplicação web, ficar verificando a data atual e comparando com minha data cadastrada no bd, sem precisar de uma ação do usuario.

 

Exemplo:

 

Quero comparar data atual com a do BD, daí quando a diferença for x, preciso enviar um e-mail, mas esse processo tem que ser automático.

 

Desde já agradeço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde yslladd, olha só, até da pra fazer da seguinte forma, usando thread, em aplicações web, através do Global.asax você pode iniciar uma thread no start da aplicação e essa thread ficará executando a verificação, porém para esse start acontecer alguem tem q abrir a aplicação.

 

Outra ideia é usar agendamento dentro do banco de dados, eu utilizo um esquema parecido neste site www.classificadosdf.com.br, nele tem uma SP dentro do banco SQL 2005 que roda todo dia meia noite atualizando as contas vencidas de um nível de acesso pra outro nível, porém é dentro do SQL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Segue exemplo utilizando WCF.

 

PS: É funcional, porém, precisa de um sistema de monitoração para verificar se a thread está ativa, se já há uma thread realizando a tarefa e etc...

 

Na página:

        <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Start" />
        <asp:Button ID="Button2" runat="server" onclick="Button2_Click" Text="Report" />
        <asp:Button ID="Button3" runat="server" onclick="Button3_Click" Text="Stop" />

No código:

 

        protected void Button1_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client service = new WebApplication1.ServiceReference1.Service1Client();
            service.StartService();
            service.Close();
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client service = new WebApplication1.ServiceReference1.Service1Client();
            service.StartReporting();
            service.Close();
        }

        protected void Button3_Click(object sender, EventArgs e)
        {
            ServiceReference1.Service1Client service = new WebApplication1.ServiceReference1.Service1Client();
            service.StopService();
            service.Close();
        }

No WCF

 

    public class Service1 : IService1
    {
        static bool _status;

        #region IService1 Members

        public void StartService()
        {
            _status = true;
        }

        public void StopService()
        {
            _status = false;
        }

        public void StartReporting()
        {
            Thread trd = new Thread(Report);
            trd.Start();
        }

        void Report()
        {
            while (_status)
            {
                using (StreamWriter sw = new StreamWriter("C:\\testeServico.txt", true))
                {
                    sw.WriteLine(DateTime.Now);
                }
                Thread.Sleep(3000);
            }
        }
        #endregion
    }

No exemplo, a cada 3s o WCF escreve uma linha com a data e hora num txt no diretório C:.

 

PS: Esse exemplo, eu desenvolvi na curiosidade se funcionaria, como disse, precisa ser monitorado para analisar: Concorrencia, Segurança, Monitoração e etc... Existe o Workflow Foundation que serve justamente para automatização de tarefas. Mas não conheço a fundo, vale pesquisar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, primeiramente obrigado a todos.

 

roberto182 agradeço o seu post, ainda não testei seu código, mas o que preciso mesmo é algo mais simples porém com a mesma necessidade, ou seja, eu preciso realmente que alguem acesse minha aplicação web, mesmo com trreand, porque, por que tenho que pegar meus dados cadastrados no banco e comparar a data prevista com a data atual, se a diferença da data for menor ou igual a 10 eu disparo um e-mail para a pessoa responsável, para que ela possa atualizar sua data, entenderam? Nesse caso eu acredito que a forma de fazer seja mais simples, então prefiro botar um método no MasterPage.master da minha aplicação toda vez que houver acesso, eu rodo esse script, o problema disso é que os acessos tem que ser feito em media de 10 a 10 dias, caso contrario, minha aplicação pode não avisar da diferença dessa data.

 

 

Enfim, obrigado a todos.

 

Resolvido!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.