yslladd 0 Denunciar post Postado Novembro 12, 2009 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
quintelab 91 Denunciar post Postado Novembro 12, 2009 Uma aplicação web impossível, a rotina só será executada quando algum formulário for aberto. Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Ivan.Teles 23 Denunciar post Postado Novembro 12, 2009 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
roberto182 0 Denunciar post Postado Novembro 13, 2009 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
yslladd 0 Denunciar post Postado Novembro 13, 2009 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