Ir para conteúdo

POWERED BY:

Arquivado

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

edimar

Programa hora de executar um Windoows Service

Recommended Posts

Pessoal,

 

Estou desenvolvendo um serviço que deve ser executado todo dia em um determinado horario.

Existe alguma forma de definir esse horario?

 

Sei que consigo programar para ele ser executado a xx horas apos uma execução. Porem estava querendo definir um horario especifico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

um saída seria fazer uma busca em alguma tabela de configuração no banco de dados ou mesmo no app.config e definir um timer no evento OnStart

 

Exemplo:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Timers;
using System.Configuration;

namespace WindowsService1
{
    public partial class Service1 : ServiceBase
    {
        private Timer iTimer;

        public Service1()
        {
            InitializeComponent();
        }

        protected override void OnStart(string[] args)
        {
            iTimer = new System.Timers.Timer();
            int iTempoDecorrido = Convert.ToInt16(ConfigurationManager.AppSettings["TempoVerificacao"]);
            iTempoDecorrido = iTempoDecorrido * 60000;
            iTimer.AutoReset = true;
            iTimer.Elapsed += new ElapsedEventHandler(OnElapsedTime);
            iTimer.Interval = iTempoDecorrido;
            iTimer.Start();
        }

        protected override void OnStop()
        {
            iTimer.Stop();
            iTimer.Dispose();
            GC.Collect();
        }

        private void OnElapsedTime(object source, ElapsedEventArgs e)
        {
            iTimer.Stop();

            try
            {
                //FAZ O QUE TEM QUE FAZER AQUI
            }
            catch (Exception ex)
            {
                //COLOCAR O TRATAMENTO DE ERROS AQUI
            }

            GC.Collect();
            GC.WaitForPendingFinalizers();
            iTimer.Start();
        }
    }
}

se tiver algum outro método por favor poste aqui, pois não sei se é a forma mais correta mas funciona, quando preciso, faço dessa forma

abs

 

cheers!

Compartilhar este post


Link para o post
Compartilhar em outros sites

um saída seria fazer uma busca em alguma tabela de configuração no banco de dados ou mesmo no app.config e definir um timer no evento OnStart

não sei se é a forma mais correta, mas funciona

abs

 

Eu desenvolvi até o momento dessa forma, onde eu tenho o Time no config dizendo que deve ser executando a cada 24hs. Porém isso vai me obrigar por exemplo a startar o serviço a primeira vez as 20hs, caso eu queira que a rotina execute todo dia as 20hs...

 

A minha duvida é se teria alguma forma de startar o serviço a qualquer hora do dia porem ele só iria executar a rotina as 20hs..

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Eu desenvolvi até o momento dessa forma, onde eu tenho o Time no config dizendo que deve ser executando a cada 24hs. Porém isso vai me obrigar por exemplo a startar o serviço a primeira vez as 20hs, caso eu queira que a rotina execute todo dia as 20hs...

 

A minha duvida é se teria alguma forma de startar o serviço a qualquer hora do dia porem ele só iria executar a rotina as 20hs..

 

uma idéa seria no evento onStart você verificar a hora definida no config e fazer umas contas para acertar o timer para o momento correto e qdo. entrar no time reajustar o horario do timer para a próxima execução

editei meu post anterior e coloquei um exemplo, acho que você postou antes de eu editar, de qualquer forma, verifica o exemplo e tenta adaptar nele

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.