WaitableTimer und der Schlafzustand mit Tücken

Für VCR.NET 4.1 habe ich einige grundlegende Änderung beim Arbeiten mit dem Schlafzustand vorgenommen. Ursache war, dass seit Windows Vista der Windows Dienst den durch den Anwender ausgelösten Schlafzustand nicht mehr unterbinden kann und sich dem ganzen Vorgang stillschweigend anschließen muss. Das Beenden laufender Aufzeichnungen ist dabei ein wichtiger Schritt und das scheint auch soweit zu klappen. Allerdings wollte ich VCR.NET dafür sorgend lassen, dass zum einen ein überhasteter Schlafzustand Aufzeichnungen nicht ganz unter den Tisch fallen lässt zum anderen aber der Rechner auch nicht direkt wieder aufgeweckt wird.

Die Grundidee war der neue Konfigurationsparameter zur minimalen Verweildauer im Schlafzustand. Wenn der Anwender eine Minute vor Beginn in der Aufzeichnung den Schlafzustand auslöst, dann respektiert VCR.NET das erst einmal. Allerdings wird sichergestellt, dass der Aufweckzeitpunkt durch einen sogenannten WaitableTimer nicht weiter als diese minimale Verweildauer in der Zukunft liegt – die Voreinstellung ist 5 Minuten, i.e. im Beispiel gingen „nur“ 4 Minuten der Aufzeichnung verloren.

Leider haben wir nun festgestellt, dass das so nicht immer geht. Es scheint so zu sein, dass Windows den Aufweckzeitpunkt ignoriert wenn dieser zu spät während des Übergangs in den Schlafzustand erfolgt! Einige Änderungen in VCR.NET 4.1 führen dazu, dass je nach konkreter Konfiguration, Anzahl von Aufzeichnungen und Karten und abhängig von der Leistungsfähigkeit des Rechners in einigen Fällen genau dies passiert. Und dann wacht der Rechner für die nächste Aufzeichnung gar nicht auf – blöd, wenn das im Urlaub passiert.

Ab VCR.NET 4.2 kann man dieses neu eingeführte Verhalten wieder deaktivieren – in der Voreinstellung ist es weiterhin aktiv, für mich benutze ich es als Selbstschutz gegen persönliche Dummheit.

Neue Einstellung

Ist das Häkchen gesetzt, so manipuliert VCR.NET 4.2 den Aufweckzeitpunkt nicht mehr. Würde das Kontrollzentrum einen gelben Hintergrund zeigen und damit signalisieren, dass eine Aufzeichnung unmittelbar bevorsteht, so kann es dann sein, dass der Rechner sehr schnell wieder aufwacht – und dann die Aufzeichnung korrekt ausführt. Bei einem blauen Hintergrund und damit einer laufenden Aufzeichnung kann das Verhalten nicht genau vorhergesagt werden. Überlappen sich Aufzeichnungen, so wird VCR.NET zu Beginn der Folgeaufzeichnung aufwachen, ansonsten eventuell unnötig zu dem Zeitpunkt, an dem die unterbrochene Aufzeichnung eigentlich zu Ende wäre. Mit Verlust ist auf jeden Fall zu rechnen.

Nach aktuellem Kenntnisstand ist das im Moment das beste, was ich für VCR.NET 4.2 machen kann.

Jochen

VCR.NET 4.2 – Ablage der Favoriten (gespeicherten Suchen) der Programmzeitschrift

VCR.NET 4.2 wird die gespeicherten Suchen der Programmzeitschrift (dort Favoriten genannt) im Benutzerprofil auf dem Server (App_Data Unterverzeichnis) ablegen – der REST Web Service wurde entsprechend erweitert. VCR.NET 4.1 speicherte die Favoriten im localStorage auf dem Client. Allerdings verwaltet jeder Browser diese Ablage individuell und ärgerte dadurch Anwender wie mich, die ab und an zwischen den Browsern wechseln – hier IE und FF.

Es wird auch ein einfacher Migrationsalgorithmus eingesetzt: wenn man die gespeicherten Suchen aufruft aber noch keine im Profil abgelegt wurden, so werden die des Browsers verwendet. Bei der ersten Veränderung an den Favoriten (neu Anlegen oder Entfernen) gibt es dann endgültig die einzige Wahrheit auf dem Server.

Viel Spaß

Jochen

VCR.NET 4.2 – Regeln für die Aufzeichnungsplanung

Hier schon einmal ein erster Blick auf die Möglichkeit, mit VCR.NET 4.2 ein Feintuning an dem Regelwerk vorzunehmen, das die Grundlage für die Verteilung von Aufzeichnungen auf verschiedene DVB Geräte ist. Ich habe diese Version noch nicht hochgeladen, da es wirklich direkt aus der Werkstatt ist: keine Ahnung, ob man auch etwas ordentlich kaputt machen kann und zudem sind die Konfigurationsmöglichkeiten unzureichend. Wie dem auch sei: das Bild zeigt die Regeln, die ohne weitere Maßnahmen durch den Anwender verwendet werden – i.e. vor allem direkt nach einer Erstinstallation.

Initiale Regeln

Wie zu sehen erfolgt die Eingabe direkt aus der Konfiguration des VCR.NET heraus. Zusätzlich gibt es natürlich auch einen recht einfach direkt verwendbaren REST Web Service.

Jochen

VCR.NET 4.2 ohne Trauerränder

In VCR.NET 4.1 habe ich an einigen Stellen graue Rahmen verwendet, um logisch zusammenhängende Daten optisch ein wenig enger zusammen zu fassen. Irgendwie sah das alles wie auf einer Trauerkarte aus. VCR.NET 4.2 verwendet in der aktuellen Evaluation XML fieldset Tags, die sich so ähnlich präsentieren wie die guten alten Windows Frames (Win32 SDK, WinForms, VB6, etc.).

Beim Ändern
In der Konfiguration
Integrierte Programmzeitschrift

Irgendwie verhält sich das fieldset aber zumindest im IE10 komisch – ich habe das noch nicht zu Ende untersucht, im Firefox sieht es ordentlich aus. Setzt man im IE10 die Hintergrundfarbe NICHT, so sind die Ecken abgerundet, dafür gibt es aber ein Darstellungsproblem am rechten Rand – deutlich zu sehen, wenn die Seite eine Hintergrundfarbe verwendet. Setzt man die Hintergrundfarbe des fieldset auf transparent, so verschwindet der Darstellungsfehler, dafür sind aber nun die Ecken nicht mehr abgerundet – so wie im FF von Anfang an. Komisch, aber so ist er halt der Internet Explorer…

Jochen

VCR.NET 4.2 – Prüfen auf neuere Downloads

Ich wollte es jetzt nicht als ständige Prüfung einbauen, da ich selbst es nicht besonders mag, wenn Programme einfach so nach Hause oder sonst wohin telefonieren. Aber immerhin wird es mit dem Web Client von VCR.NET 4.2 möglich sein zu prüfen, ob die lokal installierte Version mit der im Download angebotenen übereinstimmt. Das wird dann etwa so aussehen:

Versionsprüfung

Tatsächlich wird nur auf eine Differenz der Versionen geprüft, nicht auf die Versionsnummern an sich: ich habe hier schon eine Spielversion von 4.2 (im Wesentlichen die Nutzung von jQuery 2 und TypeScript 0.9, was auch fast problemlos funktioniert hat), deren Version vom aktuellen 4.1 Download abweicht. Eine Differenz ist farblich markiert, wären die beiden Versionen identisch, dann sollten beide Texte identisch aussehen.

Ich werde mir auch weiterhin vorbehalten, kleinere Fixes durch Aktualisierung des Downloads zu verbreiten. Sinn macht das aber erst ab 4.2: der aktuelle 4.1 Download mit der Version 4.1.72 wird sich nicht mehr ändern, Fixes für 4.1 werden wohl weiterhin einzelne Dateiupdates zur manuellen Selbstpflege sein – Sorry.

So Long

Jochen