public void Import() { _importResult = new ImportResult(); if (BeginWork != null) { BeginWork(this, new EventArgs()); } // The trackpoints var routeSegments = new List <RouteSegment>(); var rs = new RouteSegment(); var current = 0; var total = _trackToImport.GetTrackInfo().NumbetOfTrackPoints; var elapsedTimes = new List <double>(); DateTime startTime = DateTime.MinValue; foreach (var tp in _trackToImport.GetTrackPoints()) { var waypoint = new Waypoint { Time = tp.Time, LongLat = new LongLat((double)tp.Longitude, (double)tp.Latitude), Altitude = tp.Altitude }; if (tp.HasMark(RegSEPointType.WayPoint)) { elapsedTimes.Add((tp.Time - startTime).TotalSeconds); } rs.Waypoints.Add(waypoint); current++; if (WorkProgress != null && current % 10 == 0) { WorkProgress(this, new WorkProgressEventArgs((double)current / total)); } } if (rs.Waypoints.Count > 0) { routeSegments.Add(rs); } _importResult.Route = new Route(routeSegments); // create one lap (from start to finish) LapCollection laps = RouteImporterUtil.CreateLapsFromElapsedTimes(startTime, elapsedTimes, routeSegments); _importResult.Laps = laps; _importResult.Succeeded = true; if (EndWork != null) { EndWork(this, new EventArgs()); } }