[C#] Timer dagelijks/wekelijks/maandelijks

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • jfversluis
  • Registratie: Mei 2004
  • Laatst online: 23-09-2024
Ik ben bezig een Windows service te bouwen. Het is de bedoeling dat deze één keer per dag/week/maand contact maakt met een webservice.
Op zich geen probleem ik kan alleen nergens vinden hoe ik die interval een beetje fatsoenlijk kan regelen. Het lijkt me niet slim een timer te gaan laten lopen en ervan uitgaan dat de computer een maand up blijft en zo niet weer opnieuw begint met tellen!

Dus iemand hier een (mooie) oplossing voor?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Als het een interval van dagen/weken/maanden betreft zou ik niet eens resources lopen verkwisten maar gewoon een scheduled task maken ;) Scheelt timers of ander gedoe en je bent erg flexibel in je scheduling dankzij de taskscheduler van je OS. Je kunt zelfs verschillende schedules langs/door elkaar gebruiken dan.

En anders zet je gewoon een timer op een interval van (zeg) 60 seconden en doe je een simpele if huidige_datumtijd >= trigger_datumtijd then...

[ Voor 48% gewijzigd door RobIII op 30-03-2009 13:59 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • jfversluis
  • Registratie: Mei 2004
  • Laatst online: 23-09-2024
RobIII schreef op maandag 30 maart 2009 @ 13:57:
Als het een interval van dagen/weken/maanden betreft zou ik niet eens resources lopen verkwisten maar gewoon een scheduled task maken ;) Scheelt timers of ander gedoe en je bent erg flexibel in je scheduling dankzij de taskscheduler van je OS. Je kunt zelfs verschillende schedules langs/door elkaar gebruiken dan.

En anders zet je gewoon een timer op een interval van (zeg) 60 seconden en doe je een simpele if huidige_datumtijd >= trigger_datumtijd then...
Ach ja tuurlijk..
Als ik gewoon bij het runnen gewoon een datum van + 1/ +7/ +30 zet ergens en die de hele tijd aan hou en bij een check overschrijf me de volgende limiet.. Soms is het zo simpel he :')

Het moet overigens wel echt in een service dus met schedulen gaat niet lukken helaas.. Bedankt! :D

Acties:
  • 0 Henk 'm!

  • stp_4
  • Registratie: Maart 2003
  • Laatst online: 17-09 20:25
Je kan een timer toch ook starten met een vertraging erin? Dan zou je ergens kunnen opslaan wanneer timer voor het laatst heeft gerund en op deze manier bij een reboot kunnen bepalen wanneer hij weer moet draaien.

stp - PSN ID: stp_4


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
c0nd0rin0 schreef op maandag 30 maart 2009 @ 14:03:
Het moet overigens wel echt in een service
Dan ben ik érg benieuwd naar het waarom ;)
stp_4 schreef op maandag 30 maart 2009 @ 14:04:
Je kan een timer toch ook starten met een vertraging erin? Dan zou je ergens kunnen opslaan wanneer timer voor het laatst heeft gerund en op deze manier bij een reboot kunnen bepalen wanneer hij weer moet draaien.
Lijkt me nogal omslachtig; moet je de oude/vorige waarde gaan bijhouden etc. en wat als je app onderuit gaat? Dan is die waarde niet eens meer opgeslagen?

[ Voor 54% gewijzigd door RobIII op 30-03-2009 14:06 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • jfversluis
  • Registratie: Mei 2004
  • Laatst online: 23-09-2024
RobIII schreef op maandag 30 maart 2009 @ 14:05:
[...]

Dan ben ik érg benieuwd naar het waarom ;)

[...]

Lijkt me nogal omslachtig; moet je de oude/vorige waarde gaan bijhouden etc. en wat als je app onderuit gaat? Dan is die waarde niet eens meer opgeslagen?
Omdat het gaat om een applicatie t.b.v. het updaten van een pakket.
Hierdoor moeten er rechten beschikbaar zijn op het systeem die een op dat moment ingelogde gebruiker misschien niet heeft enz. m.b.t. het overschrijven van bestanden en starten/stoppen van andere services.

Nou ja ik het het zo in mn hoofd nu.. Dat je een timer runt iedere minuut o.i.d. die dus die simpele if uitvoert. En wanneer de interval is (geweest) er dan de bewerkingen uitgevoerd worden en de nieuwe datum + interval weer op wordt geslagen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
c0nd0rin0 schreef op maandag 30 maart 2009 @ 14:10:
[...]


Omdat het gaat om een applicatie t.b.v. het updaten van een pakket.
Hierdoor moeten er rechten beschikbaar zijn op het systeem die een op dat moment ingelogde gebruiker misschien niet heeft enz. m.b.t. het overschrijven van bestanden en starten/stoppen van andere services.
Je kunt een scheduled task ook prima onder een andere account (laten) draaien en die kan net zo goed services starten/stoppen :?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

Lekker efficiënt ook met resources omgaan, omdat je dus elke dag/week/maand moet pollen voor een update. Bouw het in de applicatie zelf, op basis van de dag en even 1 check wanneer de applicatie opstart, probleem opgelost.

Maar je wil dus om de rechten van de huidige gebruik te omzeilen dat er een service draait onder een account dat de rechten wel hebt. Is dat niet aan systeembeheer om dat op te lossen ipv de leverancier?

Edit: weet niet of je de bouwer bent, je bent alleen bezig met het sleutelen aan een Windows service. Scheduled tasks ftw in dit geval, veel simpeler.

Maareh, moest task scheduler zelf niet onder een ander account draaien om dit mogelijk te maken? Ik dacht niet dat je een task zelf kan toewijzen aan een ander account.

[ Voor 27% gewijzigd door Motrax op 30-03-2009 14:20 ]

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |


Acties:
  • 0 Henk 'm!

  • jfversluis
  • Registratie: Mei 2004
  • Laatst online: 23-09-2024
Motrax schreef op maandag 30 maart 2009 @ 14:18:
Lekker efficiënt ook met resources omgaan, omdat je dus elke dag/week/maand moet pollen voor een update. Bouw het in de applicatie zelf, op basis van de dag en even 1 check wanneer de applicatie opstart, probleem opgelost.

Maar je wil dus om de rechten van de huidige gebruik te omzeilen dat er een service draait onder een account dat de rechten wel hebt. Is dat niet aan systeembeheer om dat op te lossen ipv de leverancier?
Sorry maar weet je de volledige situatie?
Het kan dus niet in de applicatie zelf omdat dat een compleet pakket omvat en het hier een afstudeeropdracht omvat waarbij ik een aparte applicatie hiervoor moet gaan bouwen en niet in de source van het pakket mag/ga rommelen

En nee ik ga niet de rechten omzeilen of dat soort dingen. Daar hoef je je verder ook niet druk om te maken, dat heeft namelijk weinig van doen m.b.t. het bijhouden van een dagelijkse/wekelijkse/maandelijkse interval
Edit: weet niet of je de bouwer bent, je bent alleen bezig met het sleutelen aan een Windows service. Scheduled tasks ftw in dit geval, veel simpeler.

Maareh, moest task scheduler zelf niet onder een ander account draaien om dit mogelijk te maken? Ik dacht niet dat je een task zelf kan toewijzen aan een ander account.
Precies dat kan dus inderdaad niet :)
Ik zou alleen graag willen weten hoe men een dusdanig grote interval inbouwt. Ik bedoel.. Windows Update zal het toch ook op een bepaalde manier bijhouden? En ik neem aan dat de Task Scheduler ook op een bepaalde manier werkt om te checken of er op dit moment een app gerunt moet worden of niet? Dus was benieuwd hoe men dat voor elkaar krijgt.. Misschien, als blijkt dat dat nie teen geweldige mogelijkheid is schrap ik het alsnog op die manier!

[ Voor 28% gewijzigd door jfversluis op 30-03-2009 14:26 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Motrax schreef op maandag 30 maart 2009 @ 14:18:
Maareh, moest task scheduler zelf niet onder een ander account draaien om dit mogelijk te maken? Ik dacht niet dat je een task zelf kan toewijzen aan een ander account.
Jawel hoor.
Afbeeldingslocatie: http://www.hardhattechnologies.com/images/stories/meridian/scheduled_task_account.jpg

Afbeeldingslocatie: http://windowssecrets.com/images/wsn/W080110-Spybot-Scheduled-Task.gif
^^ Zie het "run as" deel.

[ Voor 13% gewijzigd door RobIII op 30-03-2009 14:31 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • jfversluis
  • Registratie: Mei 2004
  • Laatst online: 23-09-2024
RobIII schreef op maandag 30 maart 2009 @ 14:30:
[...]

Jawel hoor.
[afbeelding]

[afbeelding]
^^ Zie het "run as" deel.
Ok interessant dank je wel :)

Maar hoe heeft de task scheduler dat bijv. geïmplementeerd dan?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
c0nd0rin0 schreef op maandag 30 maart 2009 @ 14:32:
Maar hoe heeft de task scheduler dat bijv. geïmplementeerd dan?
Geheid (min of meer) op de manier die ik eerder beschreef. Maar als het OS je al die mogelijkheden biedt (en daarbij nog eens meer flexibiliteit biedt dan een simpele timer die een interval checkt); waarom dan het wiel opnieuw uitvinden? Daar is 't ding toch voor?

Sure; sommige zaken rechtvaardigen een service, maar in jouw geval (met de info die we momenteel erover hebben) zie ik er de noodzaak niet van in.

[ Voor 14% gewijzigd door RobIII op 30-03-2009 14:34 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • jfversluis
  • Registratie: Mei 2004
  • Laatst online: 23-09-2024
RobIII schreef op maandag 30 maart 2009 @ 14:33:
[...]

Geheid (min of meer) op de manier die ik eerder beschreef. Maar als het OS je al die mogelijkheden biedt (en daarbij nog eens meer flexibiliteit biedt dan een simpele timer die een interval checkt); waarom dan het wiel opnieuw uitvinden? Daar is 't ding toch voor?

Sure; sommige zaken rechtvaardigen een service, maar in jouw geval (met de info die we momenteel erover hebben) zie ik er de noodzaak niet van in.
Ok, dank je wel :)
Ik ga zeker mijn mogelijkheden i.c.m. de task scheduler is even bekijken! Wist inderdaad niet dat deze ook onder een andere account kon werken.

Acties:
  • 0 Henk 'm!

  • Motrax
  • Registratie: Februari 2004
  • Niet online

Motrax

Profileert

RobIII schreef op maandag 30 maart 2009 @ 14:30:
[...]

Jawel hoor.
[afbeelding]

[afbeelding]
^^ Zie het "run as" deel.
Ik zie het screenshot en denk... "Oh jaa...." dat heb ik met heel wat taken moeten doen :X
c0nd0rin0 schreef op maandag 30 maart 2009 @ 14:32:
Ok interessant dank je wel :)

Maar hoe heeft de task scheduler dat bijv. geïmplementeerd dan?
Nou... die draait een service :P
RobIII schreef op maandag 30 maart 2009 @ 14:33:
[...]

Geheid (min of meer) op de manier die ik eerder beschreef. Maar als het OS je al die mogelijkheden biedt (en daarbij nog eens meer flexibiliteit biedt dan een simpele timer die een interval checkt); waarom dan het wiel opnieuw uitvinden? Daar is 't ding toch voor?

Sure; sommige zaken rechtvaardigen een service, maar in jouw geval (met de info die we momenteel erover hebben) zie ik er de noodzaak niet van in.
Idd. Drie klikjes en dat het is in elkaar gezet, met een mooi herhalend schema. Je moet alleen wel de task kunnen verwijzen naar een .exe of andere executable die daadwerkelijk de update(check) kan uitvoeren.
c0nd0rin0 schreef op maandag 30 maart 2009 @ 14:22:
Sorry maar weet je de volledige situatie?
Hehe excuus, dat weet ik dus duidelijk niet ;)

☻/
/▌
/ \ Analyseert | Modelleert | Valideert | Solliciteert | Generaliseert | Procrastineert | Epibreert |


Acties:
  • 0 Henk 'm!

  • Niemand_Anders
  • Registratie: Juli 2006
  • Laatst online: 09-07-2024

Niemand_Anders

Dat was ik niet..

Misschien is quartz.net dan een oplossing?

If it isn't broken, fix it until it is..


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22-09 14:14

Matis

Rubber Rocket

Quartz; Dat heb ik wel eens gebruikt voor een DynDNS script wat ik moest uitvoeren eens per dag ofzo. Vond het zelf niet zo prettig werken, maar mss dat de TS het wel goed (genoeg) vind.

If money talks then I'm a mime
If time is money then I'm out of time

Pagina: 1