Feature #31
geschlossenTrainingsdaten periodisch speichern statt nur am Trainingsende
100%
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().