x112 Posted May 1, 2018 Share Posted May 1, 2018 Ich habe mir für den EPG Download per XEPG eine Aufgabe gebastelt, die als Timer auch prima funktioniert. Wenn ich die Aufgabe aber aus der Weboberfläche starte, wird das Programm laut Log zwar gestartet, aber gleich gekilled. Lässt sich das irgendwie vermeiden? Hier ein Auszug aus dem Log: zuerst ein Timer, dann der Aufruf aus der Webseite 01.05.18 10:20:00.884 TWinApp Execute C:\Program Files\Xepg\Xepg.exe 01.05.18 10:20:00.884 TWinApp Working Directory C:\Program Files\Xepg\ 01.05.18 10:20:00.947 TProcessTimer ProcTimer started 01.05.18 10:20:26.063 TServiceMain AddReference WebMain: 2 01.05.18 10:21:09.618 TServiceMain ReleaseReference WebMain: 1 01.05.18 10:21:29.399 TServiceMain AddReference WebMain: 2 01.05.18 10:22:02.346 TServiceMain ReleaseReference WebMain: 1 01.05.18 10:22:21.721 TServiceMain AddReference WebMain: 2 01.05.18 10:22:45.371 TBaseProcess API_HandleStatus 01.05.18 10:22:45.371 TBaseProcess epgclear epgclear.html 01.05.18 10:22:51.237 TProcessTimer Proctimer finished 01.05.18 10:22:51.237 TServiceMain ReleaseReference TVCR: 1 01.05.18 10:23:31.578 ReleaseStandbyblock WebMain 01.05.18 10:23:31.578 TServiceMain ReleaseReference WebMain: 0 01.05.18 10:27:41.553 SetStandbyBlock WebMain 01.05.18 10:27:41.553 TServiceMain AddReference WebMain: 1 01.05.18 10:27:43.285 TWinApp Execute C:\Program Files\Xepg\Xepg.exe 01.05.18 10:27:43.285 TWinApp Working Directory C:\Program Files\Xepg\ 01.05.18 10:28:13.486 ReleaseStandbyblock WebMain Quote Link to comment
Griga Posted May 1, 2018 Share Posted May 1, 2018 DMS-Version? Beschreibe den Ablauf detaillierter. Was meinst du mit "gekilled"? Quote Link to comment
x112 Posted May 2, 2018 Author Share Posted May 2, 2018 DMS ist die aktuelle Version von vor ein paar Tagen. In der Version davor habe ich das nicht probiert, also keine Ahnung ob das da auch schon auftrat. Der Aufruf über einen Timer läuft ca. 3 Minuten, beim Aufruf auf der Aufgaben Seite wird nur für ca. 2 Sekunden eine Meldung zum Start eingeblendet. Auf dem Rechner sehe ich nichts im Taskmanager, deshalb die Vermutung das hier etwas zu früh beendet wird und XEPG und xmltv gleich mit beendet wird. In der Task Definition steht "C:\Program Files\Xepg\Xepg.exe -xGrabThenImport". Aus XEPG wird eine VBS Datei gestartet (die im XEPG vorhandene batNoConsole.vbs) die wiederum ein Batchfile startet das die Daten per xmltv lädt. Quote Link to comment
Griga Posted May 3, 2018 Share Posted May 3, 2018 6 hours ago, x112 said: Der Aufruf über einen Timer läuft ca. 3 Minuten Und der Prozess ist so lange im Taskmanager sichtbar? 6 hours ago, x112 said: deshalb die Vermutung das hier etwas zu früh beendet wird Der DMS beendet von sich aus keine externen Prozesse. Er startet sie nur. Beenden müssen sie sich selbst. Um die Ausführung der Task besser überwachen zu können, würde ich den DMS probeweise als Anwendung im Benutzerkonto starten: Über das Tray-Icon den DMS als Service stoppen. DVBVservice.exe mit Doppelklick starten - es erscheint ein kleines Fenster, über das der DMS sich wieder beenden lässt. Das Tray-Tool erkennt ihn in dem Modus nicht und kann ihn nicht steuern Task ausführen. Da der DMS nun als GUI-Anwendung läuft, werden auch von ihm gestartete Prozesse mit Benutzeroberfläche sichtbar. Wenn ich auf diese Weise zum Beispiel den DVBViewer als Task starte, läuft der, bis ich ihn beende. Quote Link to comment
x112 Posted May 3, 2018 Author Share Posted May 3, 2018 Peinlich: bei den letzten Experimenten hatte ich wohl den Haken bei "Prozesse aller User anzeigen" vergessen. Sowohl als Task, als auch als Aufgabe laufen 4 Prozesse ca. 3 Minuten: cmd, wscript, xepg und xmltv. Der Unterschied ist: - beim Task sieht man die ganzen 3 Minuten den Status running. Wenn mein Script fertig ist, geht der Status auf erledigt und der Task wird für den nächsten Tag eingeplant. Auch wenn z.B. 5 Minuten für den Task eingeplant ist, wird er nach ca. 3 Minuten als erledigt angezeigt. Passt also. - bei der Aufgabe verschwindet nach 1-2 Sekunden das Popup running, aber die obigen Prozesse laufen normal weiter (im Systemaccount). Ist das so Absicht oder sollte das Running Popup bis zum tatsächlichen Ende stehen bleiben? Quote Link to comment
Griga Posted May 3, 2018 Share Posted May 3, 2018 2 hours ago, x112 said: Ist das so Absicht Ja. Das Popup wird nach einer festgelegten Zeit durch einen Javascript-Timer ausgeblendet. Es geht hier nur um die Rückmeldung, dass die Task gestartet wurde. Ein Server reagiert auf Client-Anforderungen, aber der Client (= Browser) weiß ja nicht, wann die Task fertig ist. Es sei denn, man lässt dort Javascript laufen, das ständig nachfragt. Auch nicht so schön Quote Link to comment
x112 Posted May 5, 2018 Author Share Posted May 5, 2018 Polling fände ich auch nicht so schön. Jetzt gibt es nur noch einen Unterschied: - ein externer Task TImer ist am Ende des Programm fertig, egal was man als Laufzeit einstellt. - ein interner EPG Timer braucht immer so lange wie man einstellt. Auch wenn der Scan schon längst fertig ist, wartet er einfach noch. Warum eigentlich? Quote Link to comment
Griga Posted May 5, 2018 Share Posted May 5, 2018 3 hours ago, x112 said: ein interner EPG Timer braucht immer so lange wie man einstellt. Auch wenn der Scan schon längst fertig ist, wartet er einfach noch. Warum eigentlich? Ich denke, weil es im DMS keine Mechanismen gibt (und noch nie gab), die einer internen Task ihren Auslöser und ihre tatsächliche Laufzeit zuordnen. Zum Beispiel merkt sich der DMS bei Datenbank-Tasks nicht, wodurch sie veranlasst wurde, kann also nach dem Start die Zugehörigkeit zum Timer nicht mehr feststellen. Teilweise ist die Laufzeit auch Definitionssache. Wann ist eine System-Aufgabe wie "Neustart" fertig? Wenn sie veranlasst wurde? Wenn der Anwender sie abbricht? Wenn der PC runterfährt? Wieder hochgefahren ist? Man müsste für jede interne Aufgabenart erst die Möglichkeit einer Zuordnung und Abfrage "Läuft sie noch" implementieren. Das ist einige Arbeit, die Lars wohl früher vermieden hat, weil er das Thema als nicht besonders wichtig ansah. Für jede Prozess-Task gibt es dagegen ein separates Objekt, das die Ausführung durch das OS kapselt (also quasi einen "Wrapper") und dessen Eigenschaft "Running" zu entnehmen ist, ob der Prozess noch läuft oder nicht. Quote Link to comment
x112 Posted May 7, 2018 Author Share Posted May 7, 2018 Danke für die Erklärungen. Mir ist das auch nicht so wichtig, es ging nur um das warum. Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.