private async void UpdatePosition(object sender, EventArgs e) { var downloaded = media.GetMediaInfo(file).Duration.TotalSeconds *downloader.Status.Progress; var seconds = Player.MediaPosition / 10000000; TimeLine.Maximum = downloaded; TimeLine.Value = seconds; DownloadSpeed.Text = GetSpeed(downloader.Status.DownloadRate); UploadSpeed.Text = GetSpeed(downloader.Status.UploadRate); SetValue(downloader.Status.Progress); CurrentTime.Text = GetTime(seconds) + "/" + GetTime((float)downloaded); if (seconds >= downloaded - 5) { Player.Pause(); Middle.Visibility = Visibility.Visible; Middle.BeginStoryboard((Storyboard)FindResource("OpacityUp")); while ((media.GetMediaInfo(file).Duration.TotalSeconds *downloader.Status.Progress) - 10 > seconds) { Animate(); await Task.Delay(1080); } var sb = (Storyboard)FindResource("OpacityDown"); var clone = sb.Clone(); clone.Completed += (s, ev) => { Middle.Visibility = Visibility.Collapsed; }; sb.Begin(Middle); Player.Play(); } }