private static void SaveTrackStates() { lock (_syncState) { if (!SaveWaitingTrackStates.Any()) { return; } var trackStates = SaveWaitingTrackStates.First(); SaveWaitingTrackStates.Remove(trackStates); if (!trackStates.Any()) { return; } var records = JsonConvert.SerializeObject(trackStates); var recordsFolder = System.IO.Path.Combine(Xamarin.Essentials.FileSystem.AppDataDirectory, "SavedTrackStates"); if (!Directory.Exists(recordsFolder)) { Directory.CreateDirectory(recordsFolder); } var fileName = System.IO.Path.Combine(recordsFolder, trackStates.First().DateTime.ToString("s").Replace(':', '-')); File.WriteAllText(fileName, records); Log.Info(TAG, $"TrackStates saved: {fileName}. Count: {trackStates.Count}"); } }
public static void AddTrackState(TrackState trackState) { if (trackState.DateTime - _firstTrackStateTime > TimePortion) { SaveWaitingTrackStates.Add(CurrentStates); CurrentStates = new List <TrackState>(); _firstTrackStateTime = trackState.DateTime; } CurrentStates.Add(trackState); Task.Run(SaveTrackStates); }