internal void EvaluateMarkers()
        {
            var now = base.Position;

            if (lastMarkerCheckTime.HasValue)
            {
                foreach (var marker in markers.ToList())
                {
                    if (marker.Time <= now && marker.Time > lastMarkerCheckTime.Value)
                    {
                        if (MarkerReached != null)
                        {
                            MarkerReached(this, new TimelineMarkerRoutedEventArgs()
                            {
                                Marker = marker
                            });
                        }
                    }
                }
            }
            lastMarkerCheckTime = now;
        }
 void markerTimer_Tick(object sender, EventArgs e)
 {
     if (markerTimer.IsEnabled)
     {
         var now = mediaElement.Position;
         if (lastMarkerCheckTime.HasValue)
         {
             foreach (var marker in markers.ToList())
             {
                 if (marker.Time <= now && marker.Time > lastMarkerCheckTime.Value)
                 {
                     if (MarkerReached != null)
                     {
                         MarkerReached(this, new TimelineMarkerRoutedEventArgs()
                         {
                             Marker = marker
                         });
                     }
                 }
             }
         }
         lastMarkerCheckTime = now;
     }
 }