2013-05-02 3 views
0

Я использую фоновый аудиоплеер для воспроизведения аудиофайла. Я попытался получить продолжительность звука, используя метод background.instance.track.duration.totalseconds. Но когда я запустил метод приложения возвращается «0» каждый раз. Продолжительность получается, если я запускаю код через точки останова. Ниже мой код.Получение продолжительности от BackgroundAudioPlayer

if (BackgroundAudioPlayer.Instance.PlayerState != PlayState.Playing) 
      { 

       progressBar1.Visibility = System.Windows.Visibility.Visible; 
       TotalTimeDisplay.Visibility = System.Windows.Visibility.Visible; 
       //this.TotalTimeDisplay.Time = TimeSpan.Parse("00:00:00.0"); 
       imgplay.Source = new System.Windows.Media.Imaging.BitmapImage(new Uri("Images/player_pause_new.png", UriKind.Relative)); 
       AudioTrack audioTrack = new AudioTrack(new Uri("a" + imgname + ".MP3", UriKind.Relative), "", "", "", null); 
       BackgroundAudioPlayer.Instance.Track = audioTrack; 
       duration = BackgroundAudioPlayer.Instance.Track.Duration.TotalMilliseconds; 
     } 

Пожалуйста, предложите решение. Спасибо заранее.

ответ

1

Попробуйте

BackgroundAudioPlayer.Instance.PlayStateChanged += new EventHandler(Instance_PlayStateChanged); 

затем

void Instance_PlayStateChanged(object sender, EventArgs e) 
    { 
     int duration = (sender as BackgroundAudioPlayer).Track.Duration.TotalMilliseconds; 
    } 

Я не знаю, почему ... но он должен начать

0

В оригинальном фрагменте кода вы просите длины дорожки сразу после установки трека, который будет воспроизводиться. С большой вероятностью система фонового аудиоплеера не имела возможности установить себя и найти длину трека и т. Д. Таким образом, в этот момент вы получите нулевую длину. Однако, если вы вручную переходите через код в отладчике, вы, как правило, будете достаточно медленными, чтобы дать системное время для настройки, и поэтому вы получите правильную длину. Использование события PlayStateChanged, как было предложено выше, решает проблему естественным образом.