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());
            }
        }