Etwas zu einem Zeitpunkt ausführen? [gelöst]
Ich werds versuchen mal zu beschreiben was ich machen will:
in einem Programm stelle ich ein, dass z.B.
jeden Tag zwischen 5:00 und 21:00 alle 5 Minuten ein zweites Programm aufgerufen wird.
Hier werde ich wohl mit Date(), Delay() und Schleifen arbeiten.
Das zweite Programm (welches vom 1. Programm regelmässig aufgerufen wird) soll bei Aufruf einfach fortlaufend nummeriert ein Bild mit einem Text darin (aktuelles Datum und Uhrzeit, aufskalieren auf PAL) das Bild ablegen (funktioniert schon).
Momentan hab ich das zweite Programm einfach mit dem gewünschten Delay in einer Schleife laufen.
Ich möchte deshalb das 1. Programm (ich nenns mal Fakecron) gesondert programmieren, damit ich bei Bedarf auch Fremdprogramme ausführen kann, und da ist eben die Frage gewesen, wie man soetwas ressoursenschonend macht.
Der Computer auf dem diese Teile laufen läuft rund um die Uhr und beherbergt auch noch andere Applikationen, die rund um die Uhr laufen müssen.
Den Task Scheduler von Windows selber möchte ich nicht verwenden, da es mir eigentlich widerstrebt mehrere Tasks irgendwie anzusteuern. Ich denke es ist leichter selber einen Programmscheduler zu basteln, als den von Windows remotemässig zu verwenden.
Momentaner Stand der Dinge: Ich werds wohl so machen, wie Rokur in der allerersten Antwort geschrieben hat realisieren. Kann aber auch sein, dass ich mir einen Cron Clone für Windows suche (cronjobs sind einfach viel flexibler zu verwalten, als der Taskscheduler)
in einem Programm stelle ich ein, dass z.B.
jeden Tag zwischen 5:00 und 21:00 alle 5 Minuten ein zweites Programm aufgerufen wird.
Hier werde ich wohl mit Date(), Delay() und Schleifen arbeiten.
Das zweite Programm (welches vom 1. Programm regelmässig aufgerufen wird) soll bei Aufruf einfach fortlaufend nummeriert ein Bild mit einem Text darin (aktuelles Datum und Uhrzeit, aufskalieren auf PAL) das Bild ablegen (funktioniert schon).
Momentan hab ich das zweite Programm einfach mit dem gewünschten Delay in einer Schleife laufen.
Ich möchte deshalb das 1. Programm (ich nenns mal Fakecron) gesondert programmieren, damit ich bei Bedarf auch Fremdprogramme ausführen kann, und da ist eben die Frage gewesen, wie man soetwas ressoursenschonend macht.
Der Computer auf dem diese Teile laufen läuft rund um die Uhr und beherbergt auch noch andere Applikationen, die rund um die Uhr laufen müssen.
Den Task Scheduler von Windows selber möchte ich nicht verwenden, da es mir eigentlich widerstrebt mehrere Tasks irgendwie anzusteuern. Ich denke es ist leichter selber einen Programmscheduler zu basteln, als den von Windows remotemässig zu verwenden.
Momentaner Stand der Dinge: Ich werds wohl so machen, wie Rokur in der allerersten Antwort geschrieben hat realisieren. Kann aber auch sein, dass ich mir einen Cron Clone für Windows suche (cronjobs sind einfach viel flexibler zu verwalten, als der Taskscheduler)
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
ah verstehe.
also, da würde ich wirklich differenzen ermitteln,
und mit WaitWindowEvent(Zeitdifferenz) arbeiten,
das stellt schon mal sicher, dass wenn kein ereignis auftritt,
dein steuerprog ressourcenschonend die Differenz lang wartet.
in der Eventschleife kannst du dann prüfen, ob EventID = 0,
und darauf hin deine Timer-Geschichte durchführen.
soweit mit PB-Bordmitteln
ansonsten, wenn Window-spezifisch ok ist,
es gibt auch einen Timer-Callback über API, der dürfte auch verwendbar sein.
also, da würde ich wirklich differenzen ermitteln,
und mit WaitWindowEvent(Zeitdifferenz) arbeiten,
das stellt schon mal sicher, dass wenn kein ereignis auftritt,
dein steuerprog ressourcenschonend die Differenz lang wartet.
in der Eventschleife kannst du dann prüfen, ob EventID = 0,
und darauf hin deine Timer-Geschichte durchführen.
soweit mit PB-Bordmitteln
ansonsten, wenn Window-spezifisch ok ist,
es gibt auch einen Timer-Callback über API, der dürfte auch verwendbar sein.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Cron-Programm für Windows von Petr Vavrin (peterb):
http://www.purebasic.fr/english/viewtopic.php?t=25897
http://www.purebasic.fr/english/viewtopic.php?t=25897
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Warum immer Thread, ein Timercallback sollte für Zeitsteuerung das
passende sein. Aber ich wiederhole mich. Thread <> Zeitsteuerung
passende sein. Aber ich wiederhole mich. Thread <> Zeitsteuerung
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Mit dem Timeout ist nicht annähernd so gut. Entsprechende API gibts auch
unter Linux (ähnliche Funktionalität, andere Syntax)
unter Linux (ähnliche Funktionalität, andere Syntax)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
...hast du eigentlich jemals im API- oder im C,T&T-Unterforum mal ein how-to gepostet,
oder müßte man sich das jetzt mühsam zusammenklauben...
ich weiß, dass du schon des öfteren nen Timer-Callback-Beispiel gepostet hast,
aber ob man das jetzt findet ist noch die zweite frage.
oder müßte man sich das jetzt mühsam zusammenklauben...
ich weiß, dass du schon des öfteren nen Timer-Callback-Beispiel gepostet hast,
aber ob man das jetzt findet ist noch die zweite frage.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
http://www.purebasic.fr/german/viewtopi ... 561#109561Kaeru Gaman hat geschrieben:...hast du eigentlich jemals im API- oder im C,T&T-Unterforum mal ein how-to gepostet,
oder müßte man sich das jetzt mühsam zusammenklauben...
ich weiß, dass du schon des öfteren nen Timer-Callback-Beispiel gepostet hast,
aber ob man das jetzt findet ist noch die zweite frage.
der dritte code, einer von hunderten treffern, die aber nicht alle was taugen

Für höhere Genauigkeit dann den HighResTimer von danilo, bzw. die von mir
angepaßte include. Die ist aber eher für Spielerchen
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
