Projekt

Allgemein

Profil

Aktionen

Feature #31

geschlossen
JH

Trainingsdaten periodisch speichern statt nur am Trainingsende

Feature #31: Trainingsdaten periodisch speichern statt nur am Trainingsende

Von Julius Haman vor 16 Tagen hinzugefügt. Vor 16 Tagen aktualisiert.

Status:
Erledigt
Priorität:
Normal
Zugewiesen an:
-
Zielversion:
Beginn:
Abgabedatum:
% erledigt:

100%

Geschätzter Aufwand:
Gefunden in Version:
ErControl 3.0.3

Beschreibung

Aktuell werden aufgezeichnete Trainingsdaten nur ein einziges Mal gespeichert: Context.SaveChanges() läuft in PrepareClose() ganz am Ende, nachdem das Trainingsfenster geschlossen wurde. RecordTrainingPoint() sammelt die TrainingPoints bis dahin nur im Speicher (FreiesTrainingWindowViewModel.cs).

Stürzt die Anwendung während eines laufenden Trainings ab (siehe #30) oder endet aus einem anderen Grund unkontrolliert (Stromausfall, OS-Absturz), gehen sämtliche bis dahin aufgezeichneten Trainingsdaten verloren – auch bei einem 30-minütigen Training.

In ErControl 2.5 gab es dafür einen Sicherheitsmechanismus: TrainingControl.cs speichert jeden TrainingPoint sofort nach dem Anlegen (alle 2 Sekunden) in einer eigenen Transaktion (DB.Instance.BeginTransaction() / Training.Save() / newTrainingPoint.Save() / DB.Instance.CommitTransaction()). Bei einem Absturz gehen dadurch höchstens die letzten paar Sekunden verloren, nicht das gesamte Training.

Vorschlag: gleiche Kadenz in ErControl3 nachbauen – Context.SaveChanges() zusätzlich in RecordTrainingPoint() nach dem Hinzufügen des neuen TrainingPoint aufrufen, nicht erst am Ende in PrepareClose().

Aktionen

Auch abrufbar als: PDF Atom