• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

debliu

execuçoes periodicas

13 mensagens neste tópico

oi,

por exemplo se eu pretender que o meu programa execute determinada tarefa todos os meses ou todos os anos consoante o relogio do Windows como faço???

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no caso de meses ou anos acho que não justifica usar um timer ou coisa do género,

uma solução do género "teste se está na altura" sempre que aplicação arranca não resolve?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

no caso de meses ou anos acho que não justifica usar um timer ou coisa do género,

uma solução do género "teste se está na altura" sempre que aplicação arranca não resolve?

ya resolve, como posso fazer isso no C#?

Que código uso?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas a app vai estar sempre a correr no sistema ou estás a espera que a tua app seja lançada no dia X a hora Z e execute tarefa Y? Se for a primeira hipotese só tens de colocar um timer de segundo a segundo (se precisares de tal precisão, mas isto pode ser intensivo) ou minuto a minuto e dentro do evento do timer verificas se está na hora de tarefa Y.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya resolve, como posso fazer isso no C#?

Que código uso?

No arranque da aplicação testas se o DateTime.Now (data e hora do windows) é superior à data que guardaste persistentemente algures (base de dados, ficheiro, etc..) e executas a tarefa que tens que executar...

esse teste pode ficar, por exemplo, no construtor da frame principal

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou seja, faço a comparação do DateTime.Now com a data e hora que quero para ver se está na altura de executar uma determinada instrução...

certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas a app vai estar sempre a correr no sistema ou estás a espera que a tua app seja lançada no dia X a hora Z e execute tarefa Y? Se for a primeira hipotese só tens de colocar um timer de segundo a segundo (se precisares de tal precisão, mas isto pode ser intensivo) ou minuto a minuto e dentro do evento do timer verificas se está na hora de tarefa Y.

É mesmo a segunda hipotese....

A minha ideia era no primeiro dia de cada mês quando a aplicação fosse executada gravasse um ficheiro de texto, caso a aplicação nao fosse executada no primeiro dia do mes gravaria o ficheiro quando fosse executada...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ou seja, faço a comparação do DateTime.Now com a data e hora que quero para ver se está na altura de executar uma determinada instrução...

certo?

yep

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

entao e se por acaso a aplicação não ser executada nessa altura???

Dá para agendar isso pa proxima execução?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a aplicação não tem que executar (arrancar) exactamente nessa altura, o que acontece é que vais detectar se a data actua é superior à data agendada e como tal quando a aplicação arrancar depois da data agendada vai correr o código.

Não esquecer que

1 - se a aplicação já estiver a correr nessa data o código não corre, só quando voltares a arrancar com a aplicação.

2- assim que o código correr deves mudar a data de agendamento para que, a partir de agora, não estar a correr o código cada vez que a aplicação arranca.

certo?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

a aplicação não tem que executar (arrancar) exactamente nessa altura, o que acontece é que vais detectar se a data actua é superior à data agendada e como tal quando a aplicação arrancar depois da data agendada vai correr o código.

Não esquecer que

1 - se a aplicação já estiver a correr nessa data o código não corre, só quando voltares a arrancar com a aplicação.

2- assim que o código correr deves mudar a data de agendamento para que, a partir de agora, não estar a correr o código cada vez que a aplicação arranca.

certo?

exacto, é isso....

mas nao sei como vou fazer essa de mudar a data de agendamento, a minha ideia era agendar pa cada primeiro dia de cada mes mas nao sei como faço isso....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

eu diria que terás que guardar em ficheiro/base de dados uma data de modo ao programa conseguir perceber se é para executar ou não, ou seja, para conseguir distinguir se já correu naquele mês ou não.

Não vou explicar acesso a file system ou base de dados, google it :)

quanto ao agendar para o próximo mês basta adicionares 1 mês ao DateTime [acho que existe um addMonths() ] que guardarás algures... digo eu

começas por construir uma date time com dia = 1, mês = mês currente +1, ano = ano actual

mãos há obra, testes...erros... correcções...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora